集合中元素的POST方法

时间:2019-01-02 12:21:30

标签: c# post model-view-controller collections

我在.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);
}

当用户单击“提交”按钮时,如何告诉代码将用户提交的集合带入控制器创建的新(空)集合?

谢谢戴维。

0 个答案:

没有答案