如何在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 [重复]