2011-02-16 73 views
1

我有一個selectlistitem的問題,它的值正在從數據庫中檢索。MVC2 SelectedListItem不綁定到ViewModel

它正在顯示視圖中的項目列表,但它沒有通過(發佈)所選值到模型中。

因此,當用戶提交或由於驗證而重新加載頁面時,選擇值(PositionApplied)爲空。

任何人都可以給我一些指針,我要去哪裏錯了嗎?

在我的控制器:

[HttpGet] 
    public ActionResult Index() 
    { 
     PopulateJobsDropdown(); 
     return View(); 
    } 

    private void PopulateJobsDropdown() 
    { 
     IEnumerable<SelectListItem> items = _service.GetJobs() 
      .Select(c => new SelectListItem 
          { 
           Value = c.JobID.ToString(), 
           Text = c.JobTitle 
          }); 
     ViewData["PositionApplied"] = items; 
    } 

在我的ViewModel

public IEnumerable<SelectListItem> PositionApplied { get; set; } 

在我看來

<%=Html.DropDownList("PositionApplied")%> 

在感謝提前任何指針!

回答

1

那麼,哪裏是代碼行獲得的該

ViewData["PositionApplied"] = items; 

public IEnumerable<SelectListItem> PositionApplied { get; set; } 

類似:

this.PositionApplied = ViewData["PositionApplied"] as IEnumerable<SelectListItem>; 

,你可以在你的瀏覽簡單的使用:

<% 
    IEnumerable<SelectListItem> PositionApplied = 
      ViewData["PositionApplied"] as IEnumerable<SelectListItem>; 
%> 

...

<%= Html.DropDownList("myDropDOwnId", PositionApplied) %> 

或者是有一些自動魔法下MVC2那我不知道關於發生的?正如我使用我一直給你的例子。


新增

爲了避免LINQ到實體錯誤(如果你使用它)改變你的方法

private void PopulateJobsDropdown() 
{ 
    IQueryble<Your_Table> jobs = _service.GetJobs(); 
    List<SelectListItem> items = new List<SelectListItem>(); 
    foreach(var job in jobs) 
     items.add(new SelectListItem 
         { 
         Value = c.JobID.ToString(), 
         Text = c.JobTitle 
         }); 
    ViewData["PositionApplied"] = items; 
} 

一切都將正常工作。

+0

我試過了,模型仍然爲空 - 值沒有被傳遞..我在想什麼? – beebul 2011-02-16 11:28:28