2010-04-13 90 views
0

我想在MVC中使用HTML.DropDownList,並沒有得到預期的返回值。這裏是我實施選擇列表的綁定到下拉 -在mvc應用程序dropdownlist的問題

IEnumerable<status> stat = _provider.GetAllStatuses(); 
Statuses = new SelectList(stat.ToList(), "id", "name", i.status.id); 

這是我的觀點 -

<%= Html.DropDownList("Status",Model.Statuses) %> 

試圖在我的控制器上運行的UpdateModel時,我得到一個錯誤。然後我試圖單獨設置每個對象。事實證明,我沒有像我期望的那樣從formvalue獲得一個int。相反,我得到了像「5,10,2,3」這樣的值。我想這是來自我如何設置我的選擇列表,但我不確定。任何人都可以看到我設置這個dd的方式錯誤?

感謝您的任何幫助,並讓我知道我是否可以澄清任何事情。

回答

0

post方法的簽名是什麼樣的?它(或模型)應該有一個被定義爲int的Status屬性。我懷疑你有更多的代碼比你向我們展示的是列出頁面上所有潛在的狀態(隱藏的字段?),而這正是你所看到的作爲一個整數的數組。

它應該是這個樣子:

public ActionResult PostAction(int status, ....) 
{ 
    ... status will contain the selected value from the dropdown ... 
} 
+0

我發現了這個問題 - 我有多個dd列表,而且我不小心有一些標籤與我的狀態框相同。謝謝。 – czuroski 2010-04-13 14:43:37

0

這是我正在做它:

var stat = _provider.GetAllStatuses(); 
myViewDataObject.Statuses = new SelectList(stat, "id", "name", i.status.id); 

統計是IEnumerable。狀態類型爲SelectList。如果您要從供應商處退回IEnumerableIQueryable,則不需要ToList()

class MyViewDataClass 
{ 
    public int StatusID { get; set; } 
    public SelectList Statuses { get; set; } 
} 

在控制器中,我接受FormsCollection對象,以及使用該模型粘合劑來更新它:

我的觀點從

System.Web.Mvc.Viewpage<MyProject.Models.MyViewDataClass> 

它看起來像這樣繼承

public ActionResult Edit(FormCollection collection) 
{ 
    var myViewDataObject = new MyViewDataClass(); 
    UpdateModel(myViewDataObject); 
} 

更多資訊http://nerddinnerbook.s3.amazonaws.com/Part6.htm

+0

但隨後你如何在模型中更新您的狀態ID? – czuroski 2010-04-13 14:23:50

+0

請參閱我的編輯.... – 2010-04-13 14:30:51

+0

我添加了一些代碼以使示例更清晰。 – 2010-04-13 14:43:08