При настройке приложения MVC 3 внешние ключи, которые позволяют раскрывающимся спискам выбирать элемент, отображаются не как раскрывающиеся списки, а как статические входные данные. Эту проблему можно решить, создав настраиваемое отображение и представление для этого поля.
Нам нужно начать с создания пользовательского частичного представления, которое будет находиться в «~ / Views / Shared / DisplayTemplates / UserGuid.cshtml» и «~ / Views / Shared / EditTemplates / UserGuid.cshtml». Код для одного находится ниже:
@model Guid
@{
incMvcSite.Models.MvcSiteDB db = new incMvcSite.Models.MvcSiteDB();
incMvcSite.Models.SecUser usr = db.SecUsers.Single(u => u.Guid == Model);
}
@usr.Display
Это отображение для шаблона, который будет искать элемент в ссылочной таблице и отображать его. Нам также нужно отредактировать шаблон следующим образом:
@model Guid
@{
incMvcSite.Models.MvcSiteDB db = new incMvcSite.Models.MvcSiteDB();
SelectList items = new SelectList(db.SecUsers.OrderBy(i => i.Display).ToList(), "Guid", "Display", Model);
}
@Html.DropDownList("", items)
Редактирование шаблона реализовано в виде выпадающего списка. Первоначально мы использовали статический HTML-код, но возникнет проблема с реализацией «префикса». Статический HTML-код обрабатывается HTML-помощниками, поэтому рекомендуется использовать HTML.DropDownList ().
Чтобы заставить MVC-фреймворк использовать новые Display и Edit для шаблонов, нам нужно аннотировать наш элемент модели и добавить следующую строку:
[UIHint ( "UserGuid")]
Это заставит MVC использовать шаблоны Display и Edit с именем «UserGuid», которые являются только частичными представлениями.