Quelle est la différence entre l' DisplayName
attribut et l' Display
attribut dans ASP.NET MVC?
c#
asp.net-mvc
data-annotations
displayattribute
.net-attributes
Ghooti Farangi
la source
la source
DisplayName
définit leDisplayName
dans les métadonnées du modèle. Par exemple:et si vous utilisez dans votre vue ce qui suit:
cela générerait:
Display
fait de même, mais vous permet également de définir d'autres propriétés de métadonnées telles que Nom, Description, ...Brad Wilson a un joli billet de blog couvrant ces attributs.
la source
Je pense que les réponses actuelles négligent de mettre en évidence les différences importantes et significatives réelles et ce que cela signifie pour l'utilisation prévue. Bien qu'ils puissent tous les deux fonctionner dans certaines situations, car l'implémenteur a intégré les deux, ils ont des scénarios d'utilisation différents. Les deux peuvent annoter des propriétés et des méthodes, mais voici quelques différences importantes:
DisplayAttribute
System.ComponentModel.DataAnnotations
espace de noms de l'System.ComponentModel.DataAnnotations.dll
assemblyDescription
ouShortName
DisplayNameAttribute
System.ComponentModel
espace de noms dansSystem.dll
L'assembly et l'espace de noms parlent de l'utilisation prévue et la prise en charge de la localisation est le grand kicker.
DisplayNameAttribute
existe depuis .NET 2 et semble avoir été davantage destiné à nommer les composants et propriétés du développeur dans la grille de propriétés héritée, pas tant aux éléments visibles pour les utilisateurs finaux qui peuvent avoir besoin d'une localisation, etc.DisplayAttribute
a été introduit plus tard dans .NET 4 et semble être conçu spécifiquement pour étiqueter les membres des classes de données qui seront visibles par l'utilisateur final, il est donc plus approprié pour les DTO, les entités et autres choses de ce genre. Je trouve plutôt malheureux qu'ils l'aient limité afin qu'il ne puisse pas être utilisé sur les cours.EDIT: On dirait que la dernière source .NET Core permet
DisplayAttribute
désormais également d'être utilisée sur les classes.la source
C'est peut-être spécifique au noyau .net, j'ai trouvé que DisplayName ne fonctionnerait pas mais Display (Name = ...) le fait. Cela peut éviter à quelqu'un d'autre le dépannage impliqué :)
la source