ASP.NET MVC使用HTML辅助器实现分页

在mvc中可以利用扩展方法添加HTML辅助器方法实现分页,这样就可以方便的实现分页代码的复用,代码如下

 1    public static MvcHtmlString PageLinks(this HtmlHelper html, int curPage, int totalPage, Func<int, string> pageUrl)
 2         {
 3             StringBuilder result = new StringBuilder();
 4             int start = 1, end = totalPage;
 5             start = curPage - 5 < 1 ? 1 : curPage - 5;
 6             end = curPage + 5 > totalPage ? totalPage : curPage + 5;
 7 
 8             if (curPage > 1)
 9             {
10                 TagBuilder prev = new TagBuilder("a");
11                 prev.MergeAttribute("href", pageUrl(curPage - 1));
12                 prev.InnerHtml = "<";
13                 result.Append(prev.ToString());
14             }
15 
16 
17             for (int i = start; i <= end; i++)
18             {
19                 TagBuilder tag = new TagBuilder("a");             
20                 tag.InnerHtml = i.ToString();
21                 if (i != curPage)
22                 {
23                     tag.MergeAttribute("href", pageUrl(i));                  
24                 }
25                 else
26                 {
27                     tag.MergeAttribute("href", "javascript:;");                  
28                     tag.AddCssClass("active");
29                 }
30                 result.Append(tag.ToString());
31             }
32 
33             if (curPage < totalPage)
34             {
35                 TagBuilder next = new TagBuilder("a");
36                 next.MergeAttribute("href", pageUrl(curPage - 1));
37                 next.InnerHtml = ">";
38                 result.Append(next.ToString());
39             }
40 
41 
42             return MvcHtmlString.Create(result.ToString());
43         }

添加以上代码后,这样在视图中创建分页链接时只需要简单的一行代码即可,如下所示,page为当前页,totalpage为总页数,第三个参数为生成的代码链接

@Html.PageLinks(page, totalPage, x => Url.Action("action", new { page=x;}))

 

posted on 2018-07-30 13:40  Day爽朗的Tian  阅读(263)  评论(0编辑  收藏  举报

导航