url 中没有查询的 Gridmvc 过滤

Gridmvc filtering without query in url

我正在使用 GridMvc 并且正在过滤数据。我想在 url 中隐藏过滤器查询,例如 http://www.mypage.com/Overview?Name=yyy 我的表单定义为:

<form class="form-inline" method="POST"  action="@Url.Action("Filter", Request.QueryString)">
    <div class="form-group>
        @Html.LabelFor(c => c.Name)
        @Html.TextBoxFor(c => c.Name, new { placeholder = "Filter", @class = "form-control" })

        <button type="submit" class="btn btn-default"><i class="glyphicon glyphicon-search"></i> Search</button>
    </div>
</form>

以及动作

[HttpPost]
public ActionResult Filter(FilterModel model)

但我总是看到查询。是否可以隐藏查询字符串?

如果您将所有数据都放在隐藏字段而不是 Request.QueryString,您可以隐藏您的查询。

我的意思是,如果您的 Request.QueryString 看起来像 param1=test1&param2=test2,您应该像这样渲染您的视图:

<form class="form-inline" method="POST"  action="@Url.Action("Filter")">
    <input type="hidden" name="param1" value="test1" />
    <input type="hidden" name="param2" value="test2" />
    <div class="form-group>
        @Html.LabelFor(c => c.Name)
        @Html.TextBoxFor(c => c.Name, new { placeholder = "Filter", @class = "form-control" })

        <button type="submit" class="btn btn-default"><i class="glyphicon glyphicon-search"></i> Search</button>
    </div>
</form>

MVC 绑定将根据此 hidden [=16] 的 name 属性 绑定 POST 上的所有隐藏值=]s.

您应该只填写输入值(用 Request.QueryString 中的值替换 test1 和 test2)