設置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架構的使用,新的模板顯示和編輯,我們需要annote我們的模型項目中添加以下行: [UIHint(「UserGuid」)
這將導致MVC使用多媒體和名爲「UserGuid」的編輯模板,它們只是部分視圖。
我沒有真正找到一個辦法。但是,到目前爲止,我想用於此的屬性已從基礎數據模型中刪除,所以問題消失了。 – Chris 2013-02-08 08:58:20