2016-07-15 6 views
0

Ich benutze GridMvc und ich filtere Daten. Ich möchte Filter-Abfrage in der URL wie http://www.mypage.com/Overview?Name=yyy Meine Form definiert ist als verbergen:Gridmvc Filterung ohne Abfrage in 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> 

und die Aktion

[HttpPost] 
public ActionResult Filter(FilterModel model) 

Aber ich sehe immer die Abfrage. Es ist möglich, die Abfragezeichenfolge zu verbergen?

Antwort

1

Sie können Ihre Abfrage ausblenden, wenn Sie alle Daten in versteckte Felder anstatt Request.QueryString eingeben.

Ich meine, wenn Ihr Request.QueryString wie param1=test1&param2=test2 aussieht, sollten Sie machen Sie wie folgt lesen:

<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 Bindung werden alle versteckten Werte auf POST nach name Eigenschaft dieses hiddeninput s binden.

Sie sollten nur Eingänge Wert füllen (ersetzen test1 und test2 mit Ihren Werten von Request.QueryString)

+0

Mein 'Request.QueryString' sieht aus wie' Name = JohnDoe'. Ich bin mir nicht sicher, ob es möglich ist, '' und '' in einer Form. – user2250152

+0

@ user2250152 warum nicht? Versuch es –