2012-04-05 170 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