实例懒得做。切几个图把代码发上要用的自己搞啦~

下面是一个helper类。

namespace System.Web.Mvc
{
public enum BarStyle
{
yahoo, digg, meneame, flickr, sabrosus, scott, quotes, black, black2, grayr, yellow, jogger, starcraft2, tres, megas512, technorati, youtube, msdn, badoo, viciao, yahoo2, green_black
}
public static class PagerBarExtension
{ public static string RenderPagerBar(this HtmlHelper html, int page, int total)
{
return RenderPagerBar(html, page, total, BarStyle.technorati);
} public static string RenderPagerBar(this HtmlHelper html, int page, int total, BarStyle style)
{
return RenderPagerBar(html, page, total, style, total);
} public static string RenderPagerBar(this HtmlHelper html, int page, int total, BarStyle style, int show)
{
if (total == )
{
return "";
}
else
{
StringBuilder sb = new StringBuilder();
string _path = html.ViewContext.HttpContext.Request.Path;
sb.Append("<div class=\"");
sb.Append(style.ToString());
sb.Append("\" >"); string queryString = html.ViewContext.HttpContext.Request.QueryString.ToString();
if (queryString.IndexOf("page=") < )
{
queryString += "&page=" + page;
}
Regex re = new Regex(@"page=\d+", RegexOptions.IgnoreCase);
string result = re.Replace(queryString, "page={0}"); if (page != )
{
sb.AppendFormat("<span><a href=\"{0}\" title=\"第一页\">{1}</a></span>", _path + "?" + string.Format(result, ), "<<");
sb.AppendFormat("<span><a href=\"{0}\" title=\"上一页\">{1}</a></span>", _path + "?" + string.Format(result, page - ), "<");
}
if(page>(show+))
{
sb.AppendFormat("<span><a href=\"{0}\" title=\"前" + (show + ) + "页\">{1}</a></span>", _path + "?" + string.Format(result,page-(show + )), ".."); }
for (int i = page-show; i <= page+show; i++)
{
if (i == page)
{
sb.AppendFormat("<span class=\"current\">{0}</span>", i);
}
else
{
if (i > & i<=total)
{
sb.AppendFormat("<span><a href=\"{0}\">{1}</a></span>", _path + "?" + string.Format(result, i), i);
}
}
}
if (page < (total-(show)))
{
sb.AppendFormat("<span><a href=\"{0}\" title=\"后" + (show + ) + "页\">{1}</a></span>", _path + "?" + string.Format(result, page + (show + )), ".."); }
if (page < total)
{
sb.AppendFormat("<span><a href=\"{0}\" title=\"下一页\">{1}</a></span>", _path + "?" + string.Format(result, page + ), ">");
sb.AppendFormat("<span><a href=\"{0}\" title=\"最后一页\">{1}</a></span>", _path + "?" + string.Format(result, total), ">>"); }
sb.AppendFormat("<span class=\"current\">共{1}页</span>", page, total);
sb.Append("</div>");
return sb.ToString();
}
}
}
}

使用(VIEW):

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="indexHead" ContentPlaceHolderID="head" runat="server">
<title>Home Page</title>
<link href="/Content/pagecss.css" rel="stylesheet" type="text/css" />
</asp:Content> <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<%= Html.ActionLink("带其它参数","Index",new {s = "MVC"} )%>
<%= Html.ActionLink("带其它参数2","Index",new { cid = } )%>
<%= Html.ActionLink("带其它参数3","Index",new {s = "MVC" , cid = } )%> <%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]))%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.badoo )%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.badoo, )%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.black, )%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.digg, )%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.flickr, )%>
<%= Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.grayr, )%> </asp:Content>

最后一个int参数表示显示当前页左右各多少个页码

效果:

controller:

 public ActionResult Index(int? page,string s,int? cid)
{
int _page = page??;
ViewData["Message"] = "Welcome to ASP.NET MVC!";
ViewData["Page"] = _page;
ViewData["Total"] = ; return View();
}

不是啥高深的东西,不过蛮实用,

计算总页数和skip啥的就自己搞啦。给宝宝换尿布了

实例下载:/Files/francis67/MvcPagerDemo.rar

环境:VS2008SP1 ,asp.net MVC RC1

自己用的一个ASP.Net MVC分页拿出来分享下(转)的更多相关文章

  1. 学习ASP.NET MVC(七)——我的第一个ASP.NET MVC 查询页面

    在本篇文章中,我将添加一个新的查询页面(SearchIndex),可以按书籍的种类或名称来进行查询.这个新页面的网址是http://localhost:36878/Book/ SearchIndex. ...

  2. 基于Bootstrap的Asp.net Mvc 分页

    基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...

  3. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  4. 学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图

    今天我将对前一篇文章中的示例进行修改,前一篇文章中并没有用到视图,这次将用到视图.对于前一个示例中的HelloWorldController类进行修改,使用视图模板文件生成HTML响应给浏览器. 一. ...

  5. 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序

    学习ASP.NET MVC系列: 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器 学习ASP ...

  6. ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页

    我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...

  7. NHibernate构建一个ASP.NET MVC应用程序

    NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...

  8. 2.第一个ASP.NET MVC 5.0应用程序

    大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...

  9. 【ASP.NET】第一个ASP.NET MVC应用程序

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...

随机推荐

  1. BZOJ4155 : [Ipsc2015]Humble Captains

    第一问最小割,第二问: 设du[i]表示i点的度数,则要最小化$\frac{|1集合的du[i]之和-2集合的du[i]之和|}{2}$, 压位01背包即可. #include<cstdio&g ...

  2. 面试题中遇到的SQL题目

    1.假设有一张表示cj表 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 要求查询结果: 姓名 语文 ...

  3. JAVA生成验证码

    <img border="0"                             src="ValidateCode"                ...

  4. 【C语言】16-预处理指令2-条件编译

    条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译. 一.基本用法 1 #if 条件1 2 . ...

  5. MySQL 记录不存在时插入 记录存在则更新的实现方法

    INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; INSERT 中 ON DUPLICATE KEY UP ...

  6. C++ Split string into vector<string> by space

    在C++中,我们有时候需要拆分字符串,比如字符串string str = "dog cat cat dog"想以空格区分拆成四个单词,Java中实在太方便了,直接String[] ...

  7. ACM对时间掌控力和日积月累的习惯的意义

    马云说,要想创业成功,不是要知道现在什么东西最火,而是要清楚的知道十年以后什么东西最火.这就意味着,你对时间掌控力,至少要有十年. 但是仔细回想一下自己的学生时代,自己对时间的把握是怎样的?有些人只能 ...

  8. html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody

    最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...

  9. Task Scheduler Error and Success Constants (Windows)

    If an error occurs, the Task Scheduler APIs can return one of the following error codes as an HRESUL ...

  10. .NET开发问题汇总

    问题一: mvc 部署到iis 提示错误未能加载文件或程序集System.Web.Http.WebHost 解决方案: Nuget程序包管理 —>程序包管理控制台,运行以下命令即可:Update ...