代码之家  ›  专栏  ›  技术社区  ›  Davide Vitali

集合中元素的POST方法

  •  0
  • Davide Vitali  · 技术社区  · 6 年前

    我在一个.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()
        {
            // some code
        }
    }      
    

    重要提示 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)
    {
        // Register the submitted data
    
        return View(viewModel);
    }
    

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

    0 回复  |  直到 6 年前