我有一个类型存储过程列表,其中包含ID和Name作为数据。 我在模型中具有int类型的属性和相同存储过程的列表。 现在我想将这些信息绑定到ListBoxFor
在视图中我写了这个
@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
但是我收到了错误
当允许多个选择时,参数'expression'必须求值为IEnumerable。
请帮助绑定。
答案 0 :(得分:7)
试试
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" })
listHobby是我样本上的iEnumerable列表
public string[] SelectedHobbyIds { get; set; }
因此,您的视图模型一定有问题,因此您发布要检查的视图模型的效果会更好
答案 1 :(得分:5)
@ Chhatrapati Sharma,
在您的控制器中,试试这个,
ViewData['anyName'] = new SelectList {
Text = , // text from ur function
Value = , // Value from function
Selected = // if required
}
并在视图中绑定viewdata,如
<@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
答案 2 :(得分:3)
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" })
表达式中的HobbyId必须是可数字的,因为你设置了多选