似乎我能找到的所有示例都出于某种原因使用 ViewModel,所以我正在寻找 MVC 而不是 MVVM 答案:)
控制器
List<PermOptions> have = new List<PermOptions>();
List<PermOptions> nothave = new List<PermOptions>();
...populate the lists here...
var set = new PermissionSet
{
ExtId = extid,
HaveList = have,
NotHaveList = nothave
};
return View(set);
看法
@model path.to.model.PermissionSet
@{
var NotHave = new MultiSelectList(Model.NotHaveList, "Id", "Role");
}
@Html.ListBoxFor(model => model.NotHaveList, NotHave, new { @size = "30", id = "possible" });
@{
var Have = new MultiSelectList(@Model.HaveList, "Id", "Role");
}
@Html.ListBoxFor(model => model.HaveList, Have, new { @size = "30", id = "have" });
一切工作正常,显示初始列表和移动项目,但是当我提交表单时,ListBoxFors 是 Post 操作的一部分,PermissionSet.HaveList 和 PermissionSet.NotHaveList 是空的,计数为零。认为这是一个选择问题或返回问题的格式,我添加了 javascript 来选择两个框中的所有项目,并且在浏览器调试窗格中,我可以看到提交的表单数据中有与各种选项值匹配的值NotHave 和 Have,但如果在 Post 操作中,我调用 ViewData["NotHave"],它也报告为空。
我需要做什么才能在我的 Post 控制器中获取每个 ListBoxFor 中的项目列表,最好作为 PermissionSet 的一部分?