Я работаю с MVC3 и использую Entity Framework 4.0 Entities в качестве моей модели. До сих пор все отлично работает, поскольку используется в качестве модели (все операции crud/генерации страниц работают из коробки). Мне интересно, однако, как вы получаете одинаковые надежные метки и данные проверки, как при создании модели вручную?
Вот пример того, что я имею в виду. Это класс, сгенерированный образцом проекта 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; }
}
В приведенном выше примере вы можете указать, что будет отображаться в метке для поля (Дисплей) и в каком типе поля использовать (Пароль). Однако, когда я пытаюсь использовать структуру сущности и нажимаю ее на вид ниже, я вижу, что автоматически созданные метки являются именами полей, а не тем, что я хочу, чтобы пользователь мог видеть/читать:
@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>}
Мой вопрос: Как добавить эти дополнительные украшения к сущностям, которые сгенерированы с использованием EF4? Есть ли что-то помимо System.ComponentModel.DataAnnotations, которые я должен использовать? Я знаю, что объекты получаются регенерированными, и, вероятно, не рекомендуется добавлять это в код сущности напрямую, но по какой-то причине я не могу придумать более подходящий подход, чем вручную ввести текст метки в представлении (lame, нет причин для должны сделать это, это MVC!). Я хочу сохранить его таким образом, чтобы приложение было достаточно динамичным, чтобы иметь возможность отображать правильную отображаемую информацию для моей модели и поддерживать подход MVC. Как это сделать?