2016-07-15 54 views
0

我正在使用GridMvc,我正在过滤数据。我想隐藏筛选查询的网址类似http://www.mypage.com/Overview?Name=yyy 我的形式被定义为:Gridmvc过滤没有在URL中查询

<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) 

但我始终看到查询。可以隐藏查询字符串?

回答

1

如果您将所有数据都放在隐藏字段而不是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结合将根据该hiddeninput S的name属性绑定上POST所有隐藏的值。

你应该只填写输入值(从Request.QueryString与你的价值观取代测试1和测试2)

+0

我'Request.QueryString'看起来像'名称= JohnDoe'。我不确定是否有可能有''和'。 – user2250152

+0

@ user2250152为什么不呢?尝试一下 –