我在一个.NET平台上,编写了一个MVC应用程序,用于注册部门主管及其员工的出席情况。他们每个人都会登录到网页,会有一些人在他们的员工名单显示,然后他们会选中一些复选框,并从下拉列表中选择一些元素,所有这些都需要发布回服务器。
首先,我有实体:
public class Attendance
{
public DateTime Date { get; set; }
public Chief Appointed { get; set; }
public bool Present { get; set; }
public LeaveType Leave { get; set; }
public Chief Deputy { get; set; }
}
public class Department
{
public string Name { get; set; }
public int ID { get; set; }
public Chief Head { get; set; }
public Department Parent { get; set; }
public List<Department> Children { get; set; }
}
此筛选的存储库封装在ViewModel中,由于其他原因,它具有一个构造函数方法:
public class ViewModel
{
public List<Attendance> Attendances { get; set; }
public List<Department> Departments { get; set; }
public ViewModel()
{
}
}
重要提示
boostrap-switch
用于将复选框转换为开关的javascript库,因此输入元素不能依赖helper方法。
@model ViewModel
@using (Html.BeginForm("Index", "Attendances", FormMethod.Post))
{
foreach (Department department in Model.Departments)
{
<script type="text/javascript">
$(document).ready(function () {
$("[id='@department.ID']").bootstrapSwitch()
});
</script>
<div>
<div>
@department.Name
</div>
</div>
<div>
<div>
@department.Head
</div>
<div>
<input type="checkbox" id="@department.ID" name="Department.ID" checked />
</div>
</div>
}
<input type="submit" value="Submit"/>
}
现在,这就是我遇到的问题:在控制器中,我有一个POST方法,每次调用时都会创建一个ViewModel的新实例。
[HttpPost]
public ActionResult Index(ViewModel viewModel)
{
return View(viewModel);
}
当用户单击submit按钮时,如何告诉代码将用户提交的集合放入控制器创建的新(空)集合中?