¿Cuál es la diferencia entre DisplayName
atributo y Display
atributo en ASP.NET MVC?
c#
asp.net-mvc
data-annotations
displayattribute
.net-attributes
Ghooti Farangi
fuente
fuente
DisplayName
establece losDisplayName
metadatos en el modelo. Por ejemplo:y si usa en su opinión lo siguiente:
generaría:
Display
hace lo mismo, pero también le permite establecer otras propiedades de metadatos como Nombre, Descripción, ...Brad Wilson tiene una buena publicación de blog que cubre esos atributos.
fuente
Creo que las respuestas actuales no están resaltando las diferencias importantes y significativas reales y lo que eso significa para el uso previsto. Si bien ambos podrían funcionar en ciertas situaciones porque el implementador incorporó soporte para ambos, tienen diferentes escenarios de uso. Ambos pueden anotar propiedades y métodos, pero aquí hay algunas diferencias importantes:
DisplayAttribute
System.ComponentModel.DataAnnotations
espacio de nombres en elSystem.ComponentModel.DataAnnotations.dll
ensambladoDescription
oShortName
DisplayNameAttribute
System.ComponentModel
espacio de nombres enSystem.dll
El ensamblaje y el espacio de nombres hablan del uso previsto y el soporte de localización es lo mejor.
DisplayNameAttribute
ha existido desde .NET 2 y parece haber sido más destinado a nombrar componentes y propiedades de desarrollador en la cuadrícula de propiedades heredadas, no tanto para cosas visibles para los usuarios finales que pueden necesitar localización y demás.DisplayAttribute
se introdujo más tarde en .NET 4 y parece estar diseñado específicamente para etiquetar miembros de clases de datos que serán visibles para el usuario final, por lo que es más adecuado para DTO, entidades y otras cosas de ese tipo. Me parece bastante desafortunado que lo limiten, por lo que no se puede usar en las clases.EDITAR: Parece que la última fuente de .NET Core también permite
DisplayAttribute
ser utilizada en clases ahora.fuente
Quizás esto sea específico para .net core, descubrí que DisplayName no funcionaría, pero Display (Name = ...) sí. Esto puede salvar a alguien más la solución de problemas involucrada :)
fuente