我試圖在使用EF codefirst的MVC 3中開發應用程序。當我使用int屬性和約定來設置外鍵關係時,例如MVC下拉列表未映射到型號
public class Patient
{
public int ConsultantId {get;set;}
}
然後我設置的創建和編輯頁面,並使用HTML.DropDownListFor助手產生的可能的顧問
@Html.DropDownListFor(model => model.ConsultantId, ((IEnumerable<Web.Models.Consultant>)ViewBag.PossibleConsultants).Select(option
=> new SelectListItem
{
Text = Html.DisplayTextFor(_ => option.ConsultantName).ToString(),
Value
= option.ConsultantId.ToString(),
Selected = (Model != null) && (option.ConsultantId
== Model.ConsultantId)
}), "Choose...")
的正常工作清單,但我現在要移動到具有顧問對象在病人課上例如
public class Patient
{
public virtual Consultant Consultant {get;set;}
}
public class Consultant {
public virtual ICollection<Patient> Patient {get;set;}
}
我現在嘗試使用DropDownListfor設置視圖,但是這次在model.Consultant中,例如
@Html.DropDownListFor(model => model.Consultant, ((IEnumerable<Web.Models.Consultant>)ViewBag.PossibleConsultants).Select(option
=> new SelectListItem
{
Text = Html.DisplayTextFor(_ => option.ConsultantName).ToString(),
Value
= option.ConsultantId.ToString(),
Selected = (Model != null) && (option.ConsultantId
== Model.Consultant.ConsultantId)
}), "Choose...")
的創建和編輯正確的頁面加載和顧問的編輯頁面上正確選擇,但是當我發佈頁面的ModelState是這個錯誤無效「無法轉換
‘System.String’到鍵入'Web.Models.Consultant「。有誰知道如何使用DropDownListFor,以便模型可以映射回對象。
這真的是最好的方法嗎?有沒有人遇到過這樣做,而不必申報一個單獨的ID屬性? – 2012-12-28 09:39:29