如何将ListBox选择提交给ModelBinder?
<%=Html.Hidden("response.Index",index)%>
<%=Html.ListBox("response[index].ChoiceID",
new MultiSelectList(gc.choice,"ChoiceID","ChoiceText") )%>
'gc.choice'是一个列表
我可以将fisrt选择的值添加到模型中,但不是第二个选择可能是因为我无法更改索引。
答案 0 :(得分:3)
我以稍微不同的方式解决了这个问题......
[Model]
public IEnumerable<string> SelectedStores { get; set; }
[View]
<%= Html.ListBox("SelectedStores",
(MultiSelectList)ViewData["Stores"],
new { size = "8" }) %>
[Controller]
ViewData["Stores"] =
new MultiSelectList(StoreItems, "Value", "Text", model.SelectedStores);
因此模型有一个IEnumberable,将填充用户选择。视图显示带有MultiSelectList的ListBox,并且控制器在构造MultiSelectList时从模型传入SelectedStores。
答案 1 :(得分:1)
我构建了一个具有MultiSelect成员SamplePresentationModel
的演示模型userList
类。
然后假设IEnumerable<User> allUser
是选项列表。
我用
View(new SamplePresentationModel(){ userList = new MultiSelectList(allUsers,
"UserId",
"UserName",
allUsers.Select(user => user.UserID))});
将MultiSelection传递给视图。
然后在视图中我可以构建列表框
<label for="userList">users:</label>
<%= Html.ListBox("usersList", Model.userList)%>
在POST动作中,我可以捕捉选择:
IEnumerable<int> selectedUserIDs = Request["usersList"].Split(new Char[] { ',' }).Select(idStr => int.Parse(idStr));
不知道这是否有帮助!