2010-10-21 91 views
2

我的代碼:MVC DropDownListFor值不能爲空

<%: Html.DropDownListFor(
     model => model.CompanyName, 
     new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
     "Id", "Name")) 
%> 

名單正在與名稱等properally人口,但所選擇的項目名稱沒有被綁定到Model.CompanyName(這將是罰款,如果該解決方案將返回的ID,所以我可以有一些像

<%: Html.DropDownListFor(
     model => model.CompanyID, 
     new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
     "Id", "Name")) 
%> 

INFACT這將是我的目的,更好的,但它是真正有用的,如果我能找出爲什麼數據得到心不是必然。

回答

5

html助手總是基於值屬性綁定數據,而不是文本。也不要使用ViewData和強制轉換。我建議你這樣做:

<%: Html.DropDownListFor(model => model.CompanyID, 
    new SelectList(Model.ActiveCompanies, "Id", "Name")) %> 

其中ActiveCompanies屬性在控制人口:

public ActionResult Index() 
{ 
    var model = new SomeViewModel 
    { 
     // TODO: Use a repository 
     ActiveCompanies = new[] 
     { 
      new Company { Id = 1, Name = "Company 1" }, 
      new Company { Id = 2, Name = "Company 2" }, 
      new Company { Id = 3, Name = "Company 3" }, 
     } 
    } 
    return View(model); 
} 
+0

好了,所以用我的倉庫IM來填充ActiveCompanies場如你所說,現在有<%: Html.DropDownListFor(型號=> model.CompanyID,新的SelectList(Model.ActiveCompanies,「ID」,「姓名」))%>但是當我按下提交我得到System.NullReferenceException:對象不設置到對象的實例。 – Manatherin 2010-10-21 08:58:49

+0

在您的POST操作中,您需要重新填充存儲庫中的「ActiveCompanies」屬性。 – 2010-10-21 09:00:35

+0

正在填充列表,但它似乎沒有選擇的項目將被綁定到CompanyID – Manatherin 2010-10-21 09:01:41