我有一个类型存储过程的列表,其中有一个 ID 和一个名称作为数据。我在模型中有 int 类型的属性和相同存储过程的列表。现在我想将此信息绑定到 ListBoxFor
鉴于我已经写了这个
@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
但我收到一个错误
当允许多选时,参数“表达式”的计算结果必须为 IEnumerable。
请帮助如何绑定。
我有一个类型存储过程的列表,其中有一个 ID 和一个名称作为数据。我在模型中有 int 类型的属性和相同存储过程的列表。现在我想将此信息绑定到 ListBoxFor
鉴于我已经写了这个
@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
但我收到一个错误
当允许多选时,参数“表达式”的计算结果必须为 IEnumerable。
请帮助如何绑定。
试试看
@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; }
所以你的视图模型一定有问题,所以你最好发布你的视图模型进行检查
@贾特拉帕蒂·夏尔马,
在你的控制器中,试试这个,
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
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" })
表达式中的 HobbyId 必须是可枚举的,因为您设置了多选