Estoy trabajando con MVC3, y utilizando entidades Entity Framework 4.0 como mi modelo. Hasta ahora, todo funciona bien en cuanto a usarlo como modelo (todas las operaciones de crud/generaciones de páginas funcionan de la caja). Me pregunto, sin embargo, ¿cómo se obtienen las mismas etiquetas sólidas y la información de validación que cuando se genera un modelo manualmente?Usando System.ComponentModel.DataAnnotations con Entity Framework 4.0
Aquí hay un ejemplo de lo que quiero decir. Esta es una clase generada por el proyecto de ejemplo MVC3:
public class LogOnModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
Con el ejemplo anterior, se puede especificar lo que se hizo en una etiqueta para el campo (Display), y qué tipo de campo a utilizar (contraseña). Sin embargo, cuando trato de utilizar el marco de la entidad y empujarlo a la vista de abajo, veo las etiquetas generadas automáticamente son sólo los nombres de los campos, y no lo que quiera el usuario para ver/que leer:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Person</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MiddleName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MiddleName)
@Html.ValidationMessageFor(model => model.MiddleName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Birthdate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Birthdate)
@Html.ValidationMessageFor(model => model.Birthdate)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>}
Mi pregunta es: ¿Cómo agrego estas decoraciones adicionales para las entidades que se generan utilizando EF4? ¿Hay algo más que System.ComponentModel.DataAnnotations que debería estar usando? Sé que las entidades se regeneran y probablemente no sea una buena idea agregar esto al código de las entidades directamente, pero por alguna razón no puedo pensar en un mejor enfoque que ingresar manualmente el texto de la etiqueta en la vista (cojo, no hay razón para tiene que hacer eso, ¡esto es MVC!). Quiero mantenerlo para que la aplicación sea lo suficientemente dinámica como para poder obtener la información de visualización correcta para mi modelo y mantener un enfoque MVC. ¿Cómo lo hago?
relacionadas: http://stackoverflow.com/q/2999936/11912 –