2010-04-12 42 views
2

我正在使用Martijn Boland提供的寻呼机在我的Asp.Net Mvc 2应用程序中实现分页。如何在ASP.Net中维护查询字符串值的页面Mvc 2

我的表单使用GET方法将所有参数发送到查询字符串,它是一个包含多个表单元素的搜索表单。

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Get)) 
     {%> 

在SearchResult所查看我试图实现分页:

<div class="pager"> 
    <%= Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount, 
     new { Request.QueryString })%> 
</div> 

的Html.Pager有一些重载这我不是关于如何使用昭然若揭。 Request.QueryString使查询字符串看起来像这样:

http://localhost:1155/Search/SearchResults?QueryString=Distance%3D10%26txtZip%3D%26cb&page=2 

它应该不是这样吗?

http://localhost:1155/Search/SearchResults?Distance=20&txtZip=10021&page=2 
+0

我列出了两个查询字符串参数,还有几个,我试图避免单独列出它们。 – Picflight 2010-04-13 02:41:19

+0

您是否看到我的编辑,您必须将QueryString转换为IDictionnary,并将其传递给nen RouteValueDictionnary构造函数 – 2010-04-13 17:36:34

回答

1

我的猜测是写你的呼机像这样

<%= Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount, new { Distance = Request["Distance"], txtZip = Request["txtZip"] })%> 

,但我从来没有使用过,这只是一种猜测,...

编辑:看到ASP.Net MVC Keeping action parameters between postbacks 所以你必须从QueryString这是一个NameValueCollection创建一个RouteValueDictionary

+0

有两个以上的参数,所以我试图避免单独列出它们。 – Picflight 2010-04-13 02:42:23

+1

我想这么回答这个答案(编辑:部分)。创建一个帮助器函数将查询字符串参数转换为RouteValueDictionary并将其提供给传呼机。也许ASP.NET MVC已经包含这样的功能? – martijnboland 2010-04-14 08:16:14

+0

+1用于响应Martijn。 – Picflight 2010-04-16 06:35:57

相关问题