atributo displayname vs atributo display
¿Cuál es la diferencia entre DisplayName
atributo y Display
atributo en ASP.NET ¿MVC?
4 answers
Ambos te dan los mismos resultados pero la diferencia clave que veo es que no puedes especificar un ResourceType
en el atributo DisplayName
. Para un ejemplo en MVC 2, tuvo que subclasificar el atributo DisplayName
para proporcionar recursos a través de localización. El atributo Display
(nuevo en MVC3 y .NET4) soporta ResourceType
sobrecarga como una propiedad "lista para usar".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 17:51:22
DisplayName
establece el DisplayName
en los metadatos del modelo. Por ejemplo:
[DisplayName("foo")]
public string MyProperty { get; set; }
Y si utiliza en su vista lo siguiente:
@Html.LabelFor(x => x.MyProperty)
Generaría:
<label for="MyProperty">foo</label>
Display
hace lo mismo, pero también le permite establecer otras propiedades de metadatos como Nombre, Descripción,...
Brad Wilson tiene unabuena entrada de blog que cubre esos atributos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-10 13:58:13
Creo que las respuestas actuales están descuidando resaltar las diferencias importantes y significativas reales y lo que eso significa para el uso previsto. Si bien ambos pueden funcionar en ciertas situaciones porque el implementador creó soporte para ambos, tienen diferentes escenarios de uso. Ambos pueden anotar propiedades y métodos, pero aquí hay algunas diferencias importantes:
DisplayAttribute
- definido en el espacio de nombres
System.ComponentModel.DataAnnotations
en elSystem.ComponentModel.DataAnnotations.dll
asamblea - se puede usar en parámetros y campos
- le permite establecer propiedades adicionales como
Description
oShortName
- puede ser localizado con recursos
DisplayNameAttribute
- DisplayName está en el espacio de nombres
System.ComponentModel
enSystem.dll
- se puede usar en clases y eventos
- no se puede localizar con recursos
El ensamblado y el espacio de nombres se refieren al uso y la localización previstos el apoyo es el gran pateador. DisplayNameAttribute
ha existido desde.NET 2 y parece haber sido pensado más para nombrar componentes y propiedades de desarrolladores en la cuadrícula de propiedades heredadas, no tanto para cosas visibles para los usuarios finales que pueden necesitar localización y cosas así.
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 DTOs, entidades y otras cosas de ese tipo. Lo encuentro bastante desafortunado que lo limitaron para que no se pueda usar en las clases.
EDITAR: Parece que la última fuente de núcleo de.NET permite DisplayAttribute
para ser utilizado en clases ahora también.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-27 21:35:35
Tal vez esto es específico de.net core, encontré que DisplayName no funcionaría, pero Display(Name=...) hacer. Esto puede ahorrarle a otra persona la solución de problemas involucrada:)
//using statements
using System;
using System.ComponentModel.DataAnnotations; //needed for Display annotation
using System.ComponentModel; //needed for DisplayName annotation
public class Whatever
{
//Property
[Display(Name ="Release Date")]
public DateTime ReleaseDate { get; set; }
}
//cshtml file
@Html.DisplayNameFor(model => model.ReleaseDate)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-08 01:13:05