如何在mvc中保留复选框选择?

Posted

技术标签:

【中文标题】如何在mvc中保留复选框选择?【英文标题】:How to persist checkbox selection in mvc? 【发布时间】:2012-07-15 19:54:14 【问题描述】:

我有一个 MVC 站点/视图,顶部显示了一系列复选框,这些复选框对应于我的 webgrid 记录中可用的年份。我想点击复选框来过滤 webgrid 中的数据。我有这个工作,但是当我单击 webgrid 中的标题对其进行排序时,我的复选框重置为未选中状态。

我习惯于 webform 编程,所以一直依赖视图状态来维护选择。

我如何在 MVC 世界中做到这一点?

这是我在视图中显示复选框的代码:

  @using (Ajax.BeginForm(new AjaxOptions  InsertionMode=InsertionMode.Replace,UpdateTargetId="myGrid"))

    foreach (var y in Model.Years)
    
      <input type="checkbox" name="cbYears" value="@y.Value" />
      <label for="cbYears">@y.Value</label>
    
<br />
<input type="submit" value="Filter Results" />

网格以局部视图显示。

TIA

【问题讨论】:

【参考方案1】:

很高兴这些能帮上忙!

MVC3 WebGrid Page/Sort Issue with a CheckBox elsewhere on the page

http://websitesorcery.com/post/2012/03/19/CheckBox-Issue-with-MVC-3-WebGrid-Paging-Sorting.aspx

【讨论】:

您答案中的第二个链接似乎已关闭或可能已失效。 @MattD:感谢您的更新。是的,网站本身“websitesorcery.com”似乎已关闭。【参考方案2】:

我如何在 MVC 世界中做到这一点?

在网格中执行排序时,您必须在请求中发送过滤选项。这个想法是每当您执行排序时,您必须以查询字符串或表单提交当前过滤器选项、当前分页和与请求中的网格相关的其他内容,这样您就不需要维护状态因为请求中提供了所有需要的信息。

例如。如果你看到 jqgrid 它提供了许多选项,如排序、过滤、分页、分组等。首先说我已经过滤了特定列/值的网格,然后如果我进行排序,那么网格会附加当前过滤的列/值和排序在请求中将所有内容列为查询字符串,因此在服务器端我不需要保留任何状态,因为所有内容都在查询字符串中可用。

您也遵循类似的方法。

【讨论】:

以上是关于如何在mvc中保留复选框选择?的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器​​?

在 MVC3 中处理验证 - 每个复选框组必须选择一个复选框

为啥复选框选择列表总是在 ASP.NET MVC-5 中发布为 null [重复]

如何将javascript绑定到MVC5视图中创建的表中的checkboxes和datetimepicker

如何在 JQUERY 中订阅 MVC 复选框更改事件

MVC-如何根据在同一视图文本框中输入的值设置复选框的显示名称