0

我有一个 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

4

2 回答 2

1

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

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

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

您也遵循类似的方法。

于 2012-07-17T06:41:21.760 回答