Estoy comenzando con MVC 4 (motor Razor view). (Creo que esto también se puede aplicar a MVC 3 y anteriores). Me pregunto si hay algún beneficio al usar la anotación de datos DisplayAttribute dentro de una vista, en lugar de simplemente escribir una cadena directamente en el HTML. Por ejemplo, si tuviera el siguiente modelo:MVC 4 Anotaciones de datos "Pantalla" Atributo
public class Thing
{
public string WildAndCrazyProperty { get; set; }
}
... ¿habría ningún beneficio en la anotación de la propiedad como:
[Display(Name = "Wild and Crazy")]
public string WildAndCrazyProperty { get; set; }
... y habiendo sido mi marcado:
<html>
<body>
<div>@Html.DisplayNameFor(modelItem => modelItem.WildAndCrazyProperty)</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
... frente al no tener la anotación, y haciendo:
<html>
<body>
<div>Wild and Crazy</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
La razón por la que no he mencionado Html.LabelFor
en este caso se debe a que los datos de la propiedad se muestran como estáticos (es decir, texto no editable) en la página. Los datos nunca serán editables en esta página, por lo que no es necesario que use Html.TextBoxFor
dentro del segundo div > y luego use Html.LabelFor
para asociar correctamente una etiqueta con ese cuadro de texto.
Y esa es la forma en que me inclino. Parece que desearía algo que realmente sea más una cosa de tipo pantalla en la parte del código que hace la visualización real. Tener que recompilar el proyecto solo para cambiar un encabezado o dos parece innecesario. –
Estoy completamente de acuerdo en el punto de recopilación. Siento que incluso si tuviera que usar el modelo en múltiples vistas, las ventajas de poner esa información en un atributo no superan las desventajas. – eouw0o83hf
Así que realmente me gusta el concepto detrás de esta respuesta, sin embargo, no funciona para mí. Mi clase heredera no anula el atributo 'Display' de la clase base. ¿Alguna razón por qué? – Kehlan