自己用的一个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传递 ...
随机推荐
- BZOJ3746 : [POI2015]Czarnoksiężnicy okrągłego stołu
NOIP前做了几道POI,现在终于能在BZOJ上提交了… 交上去最后几个点WA,看了数据发现p=0的特判错了… p=0,1时特判 p=2时构造两种情况判断 p=3时不考虑1的座位进行DP 可以发现对于 ...
- 【wikioi】1002 搭桥(dfs+最小生成树)
http://wikioi.com/problem/1002/ 今天开始又开始刷水了哈T_T.照着hzwer神犇的刷题记录刷!!! 题解: 一开始我也不会,但是我想到了直接爆搜T_T. 好吧,题解. ...
- Chromium的UI绘制初探
转载请注明出处:http://www.cnblogs.com/fangkm/p/3943896.html 常见的UI库的绘制逻辑 任何一个成熟的界面框架都有一个相当复杂的结构,消息循环的处理.控件的布 ...
- SQL 标量函数-----日期函数datediff()、 day() 、month()、year()
select day(createtime) from life_unite_product --取时间字段的天值 select month(createtime) from life_uni ...
- iOS -- MVC的理解
今天在写项目的时候困惑了一下 我在写一个应用的主界面,其实是很简单的,上面有几个控件,我在想把空间写到viewController里会不会有点冗杂 后来查了一下,发现貌似也不需要分开写,毕竟界面好简单 ...
- cookie 用户第一次访问时执行
<script type="text/javascript" src="/js/jquery.Cookies.js"></script> ...
- 全屏滚动-jQuery插件实现
全屏滚动 <---很久没写了,这段忙了点,以后还是每周尽量写点东西---> 在很多情况下,我们需要页面的全屏滚动,尤其是移动端.今天简要的介绍一下全屏滚动的知识. 一.全屏滚动的原理 1. ...
- sessions 表的架构过程
对于 PHP 开发来说,保存会话用 MySQL 是一个非常不错的选择.MySQL 提供一种建立在内存中的表类型 Heap,如果每条会话数据量很小的话,可以考虑用这种类型的表来进一步优化性能.但是 He ...
- 小组项目beta发布的评价
这次最看好飞天小女警组,相比上次他们的界面漂亮了很多,功能也相对完善,他们的礼物挑选系统非常有创意.如果去网上爬更多的数据,这个项目会更完美. 新蜂团队的俄罗斯方块游戏新增加了显示下一个方块以及游戏积 ...
- [ZZ] HD7970GE vs GTX770
AMD/NV烽烟再起!HD7970GE大战GTX770 泡泡网显卡频道7月8日 高端市场肩负展示厂商实力,树立品牌形象的任务,历来是兵家必争之地.从GTX680 VS HD7970,HD7970GE ...