我在.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; }
}
这些实体(存储在SQL Server数据库中)构成一个存储库,以便当任何人登录到网页时,Controller会仅使用其职员列表填充ViewModel。
此经过过滤的存储库被包装在ViewModel中,由于其他原因,该ViewModel具有构造函数方法:
public class ViewModel
{
public List<Attendance> Attendances { get; set; }
public List<Department> Departments { get; set; }
public ViewModel()
{
// some code
}
}
这是(部分)查看代码-重要说明:我正在使用此boostrap-switch JavaScript库将复选框变成开关,所以我不能依赖辅助方法输入元素。
@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)
{
// Register the submitted data
return View(viewModel);
}
当用户单击“提交”按钮时,如何告诉代码将用户提交的集合带入控制器创建的新(空)集合?
谢谢戴维。