似乎我可以找到的所有示例都出于某种原因使用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的一部分?