自己用的一个ASP.Net MVC分页拿出来分享下(转)
实例懒得做。切几个图把代码发上要用的自己搞啦~
下面是一个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分页拿出来分享下(转)的更多相关文章
- 学习ASP.NET MVC(七)——我的第一个ASP.NET MVC 查询页面
		
在本篇文章中,我将添加一个新的查询页面(SearchIndex),可以按书籍的种类或名称来进行查询.这个新页面的网址是http://localhost:36878/Book/ SearchIndex. ...
 - 基于Bootstrap的Asp.net Mvc 分页
		
基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...
 - ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
		
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
 - 学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图
		
今天我将对前一篇文章中的示例进行修改,前一篇文章中并没有用到视图,这次将用到视图.对于前一个示例中的HelloWorldController类进行修改,使用视图模板文件生成HTML响应给浏览器. 一. ...
 - 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序
		
学习ASP.NET MVC系列: 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器 学习ASP ...
 - ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
		
我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...
 - NHibernate构建一个ASP.NET MVC应用程序
		
NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...
 - 2.第一个ASP.NET MVC 5.0应用程序
		
大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...
 - 【ASP.NET】第一个ASP.NET MVC应用程序
		
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
 
随机推荐
- BZOJ3448 : [Usaco2014 Feb]Auto-complete
			
RE了几十发,实在没办法了…只好向管理员要数据,然后发现数据规模与题目描述不符… 建立Trie并求出DFS序,同时根据DFS序确定字典序 然后每次询问相当于询问子树第k小,用主席树维护,注意压缩内存 ...
 - ashx 集成于Ihandle 简易 高性能 web
			
不用搞MV4..如果你用.ashx写的后台..自己加一个switch case就实现了路由...更方便,还不用配置 scaffold 不是dynamic data里面的东西吗 现在我全是ash ...
 - 【BZOJ】2875: [Noi2012]随机数生成器(矩阵乘法+快速乘)
			
http://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵的话很容易看出来.....我就不写了.太水了. 然后乘法longlong会溢出...那么我 ...
 - WordPress折腾日记
			
安装环境: 我开了个虚拟机xp....用xampp的整合包..下载地址https://www.apachefriends.org/zh_cn/download.html 跟着安装就行了.最后打开xam ...
 - COJ977 WZJ的数据结构(负二十三)
			
试题描述 输入一个字符串S,输出S的最长连续回文子串长度. 输入 输入一个字符串S. 输出 输出S的最长连续回文子串长度 输入示例 abacbbc 输出示例 4 其他说明 1<=|S|<= ...
 - CentOS Git的还原和操作
			
$ git log --graph --oneline $ git reset --hard 版本号 用 reflog 挽救错误的重置 [jackluo@localhost demo]$ git re ...
 - 几个与时间相关的php的函数
			
这些函数很常用,但是不用的话,像我这样的初学者放下就记不清了,这时最好的办法就是去查文档,写一下印象会更深一些 1.时间戳函数strtotime():一个就是string to time(我自己这样理 ...
 - PHP对于Session漏洞的防范
			
目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...
 - Sql Server 常用方法、存储过程备用
			
常用方法 --字符串转换成数字 --CAST("1" AS int) --CONVERT(int,"1") --截取字符串 SUBSTRING(OccurreA ...
 - 解决Eclipse Debug 的source not found问题
			
最近在做Android 4.4系统的定制开发(RockIII)进行Debug时,并打上断点,运行到断点处时,Debug窗口出现source not found问题(没有自动关联程序编码): 解决办法: ...