2012-04-05 22 views
7

我有一個類型存儲過程的列表,它有一個ID和一個名稱作爲數據。 我有模型中int類型的屬性和相同存儲過程的列表。 現在我想這個信息綁定到ListBoxFor如何在Mvc3中填充ListBoxFor?

鑑於

我寫了這個

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby")) 

,但我得到一個錯誤

參數「表達」必須計算爲一個IEnumerable時允許多選。

請幫助如何綁定。

+0

請張貼模型。什麼類型是listHobby ?.你如何爲它設置價值? – Iridio 2012-04-05 12:58:00

回答

7

嘗試

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

listHobby是IEnumerable的名單上我的樣本


對不起,如果我誤導你,衝上來回答,但你不能多選列表框的結果進入一個GUID或int變量(無論你的HoobyId是什麼類型)你應該有一個數組來獲得結果,如

public string[] SelectedHobbyIds { get; set; } 

所以一定有什麼不對您的視圖模型,以便其更好,美將發表您的視圖模型進行檢查

+0

是的,我得到它我返回值爲int的愛好ID,而我必須返回一個集合。 – Rachit 2012-04-06 04:39:17

3
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

因爲你設置多選擇

+0

它沒有爲我工作 //控制器 public ActionResult AddEditSupplier(int id) clsSupplier _supp = new clsSupplier(); (); _supp.lstDocImgs = _supp.listDocImages //工作正常 return View(_supp); } //視圖 但鑑於兩者不工作 @ Html.ListBoxFor(X => x.DocumentId,新的SelectList(Model.lstDocImgs 「documentid」, 「標題」)) @Html。ListBoxFor(x => x.DocumentId,Model.lstDocImgs.Select(f => new SelectListItem {Text = f.Title,Value = f.documentid.ToString()}),new {Multiple =「multiple」}) – 2013-01-07 10:01:58

5

@賈特拉帕蒂·夏爾馬HobbyId表達必須是IEnumerable的,

在你的控制器,試試這個,

ViewData['anyName'] = new SelectList { 
Text = , // text from ur function 
Value = , // Value from function 
Selected = // if required 
} 

,並在視圖,結合可視數據一樣,

<@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"])) 

爲了進行測試,嘗試樣本選擇列表的項目如下,

ViewData['anyName'] = new List<SelectListItem>{ 
       new SelectListItem {Text = "First", Value = "0"}, 
       new SelectListItem {Text = "Second"), Value = "1"}, 
       new SelectListItem {Text = "Third", Value = "2"} 
        }; 

如果這個樣本的作品,然後檢查你函數 「_supp.listDocImages()」,並確保其返回的IList