ASP.Net MVC分页分享
下面是一个helper类。
namespaceSystem.Web.Mvc
{
publicenumBarStyle
{
yahoo,digg,meneame,flickr,sabrosus,scott,quotes,black,black2,grayr,yellow,jogger,starcraft2,tres,megas512,technorati,youtube,msdn,badoo,viciao,yahoo2,green_black
}
publicstaticclassPagerBarExtension
{
publicstaticstringRenderPagerBar(thisHtmlHelperhtml,intpage,inttotal)
{
returnRenderPagerBar(html,page,total,BarStyle.technorati);
}
publicstaticstringRenderPagerBar(thisHtmlHelperhtml,intpage,inttotal,BarStylestyle)
{
returnRenderPagerBar(html,page,total,style,total);
}
publicstaticstringRenderPagerBar(thisHtmlHelperhtml,intpage,inttotal,BarStylestyle,intshow)
{
if(total==1)
{
return"";
}
else
{
StringBuildersb=newStringBuilder();
string_path=html.ViewContext.HttpContext.Request.Path;
sb.Append("<divclass=\"");
sb.Append(style.ToString());
sb.Append("\">");
stringqueryString=html.ViewContext.HttpContext.Request.QueryString.ToString();
if(queryString.IndexOf("page=")<0)
{
queryString+="&page="+page;
}
Regexre=newRegex(@"page=\d+",RegexOptions.IgnoreCase);
stringresult=re.Replace(queryString,"page={0}");
if(page!=1)
{
sb.AppendFormat("<span><ahref=\"{0}\"title=\"第一页\">{1}</a></span>",_path+"?"+string.Format(result,1),"<<");
sb.AppendFormat("<span><ahref=\"{0}\"title=\"上一页\">{1}</a></span>",_path+"?"+string.Format(result,page-1),"<");
}
if(page>(show+1))
{
sb.AppendFormat("<span><ahref=\"{0}\"title=\"前"+(show+1)+"页\">{1}</a></span>",_path+"?"+string.Format(result,page-(show+1)),"..");
}
for(inti=page-show;i<=page+show;i++)
{
if(i==page)
{
sb.AppendFormat("<spanclass=\"current\">{0}</span>",i);
}
else
{
if(i>0&i<=total)
{
sb.AppendFormat("<span><ahref=\"{0}\">{1}</a></span>",_path+"?"+string.Format(result,i),i);
}
}
}
if(page<(total-(show)))
{
sb.AppendFormat("<span><ahref=\"{0}\"title=\"后"+(show+1)+"页\">{1}</a></span>",_path+"?"+string.Format(result,page+(show+1)),"..");
}
if(page<total)
{
sb.AppendFormat("<span><ahref=\"{0}\"title=\"下一页\">{1}</a></span>",_path+"?"+string.Format(result,page+1),">");
sb.AppendFormat("<span><ahref=\"{0}\"title=\"最后一页\">{1}</a></span>",_path+"?"+string.Format(result,total),">>");
}
sb.AppendFormat("<spanclass=\"current\">共{1}页</span>",page,total);
sb.Append("</div>");
returnsb.ToString();
}
}
}
}
使用(VIEW):
<%@PageLanguage="C#"MasterPageFile="~/Views/Shared/Site.Master"Inherits="System.Web.Mvc.ViewPage"%>
<asp:ContentID="indexHead"ContentPlaceHolderID="head"runat="server">
<title>HomePage</title>
<linkhref="/Content/pagecss.css"rel="stylesheet"type="text/css"/>
</asp:Content>
<asp:ContentID="indexContent"ContentPlaceHolderID="MainContent"runat="server">
<%=Html.ActionLink("带其它参数","Index",new{s="MVC"})%>
<%=Html.ActionLink("带其它参数2","Index",new{cid=3})%>
<%=Html.ActionLink("带其它参数3","Index",new{s="MVC",cid=5})%>
<%=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,3)%>
<%=Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.black,4)%>
<%=Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.digg,5)%>
<%=Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.flickr,3)%>
<%=Html.RenderPagerBar(Convert.ToInt32(ViewData["Page"]),Convert.ToInt32(ViewData["Total"]),BarStyle.grayr,3)%>
</asp:Content>
最后一个int参数表示显示当前页左右各多少个页码
效果:
controller:
publicActionResultIndex(int?page,strings,int?cid)
{
int_page=page??1;
ViewData["Message"]="WelcometoASP.NETMVC!";
ViewData["Page"]=_page;
ViewData["Total"]=20;
returnView();
}