【问题标题】:How to page while maintaining the querystring values in ASP.Net Mvc 2如何在维护 ASP.Net Mvc 2 中的查询字符串值的同时进行分页
【发布时间】:2010-04-16 14:36:27
【问题描述】:

我正在使用Martijn Boland 提供的寻呼机在我的 Asp.Net Mvc 2 应用程序中实现寻呼。

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

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

在 SearchResults 视图中,我正在尝试实现分页:

<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

【问题讨论】:

  • 我列出了两个查询字符串参数,还有几个,我试图避免单独列出它们。
  • 您看到我的编辑了吗,您必须将 QueryString 转换为 IDictionnary 并将其传递给 RouteValueDictionnary 构造函数

标签: asp.net-mvc-2 pagination


【解决方案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 创建一个RouteValueDictionary,它是一个NameValueCollection

【讨论】:

  • 参数不止两个,所以我尽量避免单独列出。
  • 我想第二个这个答案(编辑:部分)。创建一个辅助函数以将查询字符串参数转换为 RouteValueDictionary 并将其提供给寻呼机。也许 ASP.NET MVC 已经包含了这样的功能?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多