MVC 5将表单发布到带有许多复选框的控制器

时间:2014-07-24 11:28:53

标签: jquery asp.net-mvc-5

我有一个员工列表,我需要按以下格式显示:表格中提到employee's nameif he's an employeeif he's permanent表示为复选框。

我还希望能够通过选中Name列左侧的复选框来检查所有复选框,并通过选中每行右侧的复选框来选择员工。

示例:如果我选中Jhon Smith左侧的框,则会检查Employee和Permanent列。

检查它应该不是jQuery的问题,但我有一些困难的时间将其绑定到视图,然后一旦保存就将其发送回控制器。

enter image description here

1 个答案:

答案 0 :(得分:0)

(这是针对MVC 4我不确定是否有任何改变)

如果您使用强类型视图,这很容易做到。

强类型视图上自动生成的“列表”类型与该布局类似。

假设此视图需要@model List<EmployeeViewModel>。使用CheckBoxViewModel类创建一个强类型的局部视图,用于每个员工复选框属性,该属性具有标签的条目和复选框的id,其中包含bool用于其检查。

然后,您可以使用Html.EditorForCheckBoxViewModel上的EmployeeViewModel一起显示此部分视图。部分视图将是... ...

    @model CheckBoxViewModel

    @Html.CheckBoxFor(cbox => cbox.Checked)
    @Html.LabelFor(cbox => cbox.Checked, Model.Label)
    @Html.HiddenFor(cbox => cbox.Id)
    @Html.HiddenFor(cbox => cbox.Label)

您可能希望错过LabelFor查看您的示例,但只要隐藏的那个在那里,我认为没问题。

然后可以为视图控制器的POST版本提供输入参数类型List<EmployeeViewModel> employees,其中包含雇员对象内的复选框值。

对于左侧的复选框,您可以创建一个带有普通JavaScript或jQuery事件的直接HTML版本,以便在选中/取消选中时检查同一行中的那些。这里详细介绍了这些内容 - check uncheck All checkboxes with another single checkbox use jquery