【问题标题】:MVC 5 post form to controller with many checkboxesMVC 5 将表单发布到带有许多复选框的控制器
【发布时间】:2014-07-25 09:40:44
【问题描述】:

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

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

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

使用 jQuery 检查它应该不是问题,但我很难将它绑定到视图,然后在保存后将其发送回控制器。

【问题讨论】:

  • 为此目的使用 jquery。
  • 淘汰赛非常适合这种情况。试试看淘汰赛

标签: jquery asp.net-mvc-5


【解决方案1】:

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

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

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

假设此视图采用@model List<EmployeeViewModel>。创建一个带有CheckBoxViewModel 类的强类型分部视图,用于每个员工的复选框属性,该视图具有一个用于复选框的标签和ID 的条目,并带有一个用于检查的布尔值。

然后您可以在EmployeeViewModel 上使用Html.EditorForCheckBoxViewModels 来显示此部分视图。部分视图将类似于...

    @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

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2017-02-05
    • 2016-11-02
    • 1970-01-01
    • 2016-05-29
    相关资源
    最近更新 更多