快速业务通道

ASP.NET MVC雕虫小技 3、Pager

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

上篇过后,被评为没有什么技术含量了,但我觉得这并没有什么问题,因为文章不一定会让所有人群受益,文章或适于新手,或适于熟手。 但凡是对人有所启发,我觉得写文章有值得。

而且我觉得这一系列主要是在开发中遇到的问题及解决方法,有容易想到的,有经过几次 开发迭代才形成的。还是那句话,这些未必是一些高效的技巧,但是的确是能解决问题,也未必有什么高深的原理,只是我觉得值得分享。

3.Pager

3.1需求及模拟代码

需求,假设我们有个列表,有分页功能,我们可能需要一个页码列表,如

我们模拟写一下Action:

1: public ActionResult Index(int? p)
  2: {
  3:   if (!p.HasValue) p = 1;//如果未对p 传值就是第1页
  4:   var list = new List<int>();//生成一个模拟列表
  5:   for (var i = 0;  i < 10;i++ )
  6:   {
  7:     list.Add(p.Value);//是第几页就向中填充几个这个页码的数
  8:    }
  9:   return View(list);//强型传递给View
 10: }

View中我写以下显示方式:

1: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<List<int>>" %>
  2:
  3: <asp:Content  ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
  4:   Pager  for List
  5: </asp:Content>
  6:
  7: <asp:Content ID="indexContent"  ContentPlaceHolderID="MainContent" runat="server">
  8:   <div>
  9:      <ul>
 10:       <%foreach (int i in Model){//显示这个列表%>
 11:        <li><%=i %></li>
 12:       <%} %>
 13:     </ul>
 14:    </div>
 15:   <!--将在这里显示分页的部分-->
 16:  </asp:Content>

下面是运行后 的结果:

第一页URL类似/Home/Index?p=1

第二页URL类似/Home/Index?p=2

其它页面以此类推

3.2 最简单的解决方 案

我想最简单无非就是直接写链接,当然也要考虑更换Routing规则的问题,所以我们可以最简单如下来写:

1: <%
  2:      int p = 1;
  3:      int.TryParse(Request.QueryString["p"], out p);
  4: %>
  5: <div>
  6: <%=Html.ActionLink("上一页", "Index", new { p=  p-1})%>
  7: <strong>当前页:<%=p %></strong>
  8: <%=Html.ActionLink("下一页 ", "Index", new { p= p+1})%>
  9: </div>

这样就可以得到如果下的分页样式

当然,也可以根 据这个来写1,2,3,4,5页的链接,而不写“上一页”或“下一页”

但是这种方法有个问题,就是使用 Html.ActionLink的时候要用字符串来指定Action和Controller。下面我们来改换另一种方法来实现

3.3使用RouteLink来实现

我 们使用Html.RouteLink就可以实现不与Action或Controller的名称相耦合,例如:

1: <%for (int i = 1; i <  10; i++)
  2:   {
  3:     ViewContext.RouteData.Values["p"] = i;//设置页码
  4:      Writer.Write(
  5:       Html.RouteLink(i.ToString(), ViewContext.RouteData.Values)
  6:   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号