2011-08-27 66 views
0

在我的控制,我有以下(略去了代碼):MVC3 DropDownListFor的SelectedItem非選擇

public ActionResult Edit(string id) 
    { 
     vw_user u = _respository.getProfile(id); 

     var model = new UserProfileEditViewModel 
     { 
      SL_collegeid = new SelectList(_respository.getColleges(u.State), "id", "college1", u.id) 

     }; 
     return View(model); 
    } 

現在,當我它顯示了特定大學(U返回前右調試模式。 id)在SelectList(SL_collegeid)中被選中。但是,當頁面加載所選項目時未選中。

這裏是CSHTML代碼:

@Html.DropDownListFor(model=>model.SL_collegeid, Model.SL_collegeid) 

可能有人請幫我這嗎?

謝謝你在前進, 克里斯

回答

1

難道有問題的觀點已選擇什麼當控制器方法得到了叫什麼?如果是這樣,模型不會覆蓋ModelState字典中的內容 - 所以即使您更改視圖的後臺字段的model屬性,原始發佈的數據也會勝過它。再一次,如果是這樣的話,你可以通過不使用html助手並使用Razor語法手動設置HTML中的值來避開它。

+0

謝謝你的快速反應。我對MVC/Razor非常陌生。話雖如此,我將等同於此操作作爲page_load事件執行的操作。但是,當我將ddl更改爲@ Html.DropDownList(「collegeid」,Model.SL_collegeid)時,它按預期工作。所以我想我的問題是DropDownListFor的錯誤? – Chris

+0

@Chris - 啊,我想我誤解了你原來的問題。在DropDownListFor方法中,第一個參數「model.SL_collegeid」是模型中從列表中選擇的項目將被綁定到的位置,而第二個「Model.SL_collegeid」是選擇項目列表本身。在普通的DropDownList中,第一個參數是控件名稱,第二個參數是列表名稱。當你使用DropDownListFor時,你的「model.SL_collegeid」是什麼類型?那是集合,還是一個字符串/整型屬性來捕獲選定的ID? – davecoulter

+0

模型.SL_collegeid是集合。所以我想我想將profileid中的collegeid添加到模型中,然後嘗試以這種方式捕捉它?所以代碼看起來像@ Html.DropDownListFor(model => model.id,Model.SL_collegeid - 不能工作順便說一句,我真的需要得到這個lambda函數的句柄。 – Chris

0

您必須聲明返回正確的對象:

return view(yourObj); 

或者你也可以試試:

@Html.DropDownListFor(model=>model.SL_collegeid,new SelectList(Model.YourDropDownList as System.Collections.IEnumerable,model.SL_collegeid))