加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net mvc 自定义pager封装与优化

发布时间:2020-12-16 09:01:33 所属栏目:asp.Net 来源:网络整理
导读:asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自定义分页 pager 越来越容易扩展了。 HtmlHelper Pager扩展 Pager V1.

asp.net mvc 自定义pager封装与优化

Intro

之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自定义分页 pager 越来越容易扩展了。

HtmlHelper Pager扩展

Pager V1.0 :

 1     /// <summary>
 2     /// Pager V1.0
 3     </summary>
 4     <param name="helper">HtmlHelper</param>
 5     <param name="pager">分页信息 6     <returns></returns>
 7     public static MvcHtmlString Pager(this HtmlHelper helper,PagerModel pager)
 8     {
 9         StringBuilder sbHtmlText = new StringBuilder();
10         sbHtmlText.Append("<div style="text-align:center"><nav><ul  class="pagination">");
11         if (pager.PageIndex <= 1)
12         {
13             sbHtmlText.Append(<li class="disabled"><a href="javascript:void(0)" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>14         }
15         else
16 17             sbHtmlText.AppendFormat(<li><a href="javascript:loadData(1)" aria-label="1"><span aria-hidden="true">&laquo;</span></a></li>",pager.PageIndex - 18             sbHtmlText.AppendFormat(<li><a href="javascript:loadData({0})">{0}</a></li>19 20         sbHtmlText.AppendFormat(<li class="active"><a href="javascript:void(0)">{0}<span class="sr-only">(current)</span></a></li>,pager.PageIndex);
21         if (pager.PageIndex >= pager.PageCount)
22 23             sbHtmlText.Append(<li class="disabled"><a href="javascript:void(0)" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>24 25         26 27             sbHtmlText.AppendFormat(28             sbHtmlText.AppendFormat(<li><a href="javascript:loadData({0})" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>29 30         sbHtmlText.Append(</ul></nav>31         sbHtmlText.AppendFormat(<div><span>每页有<strong>{0}</strong>条数据,一共有<strong>{1}</strong>页,总计<strong>{2}</strong>条数据</span></div></div>32         return MvcHtmlString.Create(sbHtmlText.ToString());
33     }

?

Pager V2.0

 Pager V2.0
<param name="onPageChange">翻页事件 7      8     this HtmlHelper helper,PagerModel pager,Func<int,string> onPageChange)
 9 10         StringBuilder sbHtmlText = 11         sbHtmlText.Append(12         13 14             sbHtmlText.Append(15 16         17 <li><a href="{0}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>));
19             sbHtmlText.AppendFormat(<li><a href="{0}">{1}</a></li>1),1)">20 21         sbHtmlText.AppendFormat(22         23 24             sbHtmlText.Append(25 26         27 29             sbHtmlText.AppendFormat(<li><a href="{0}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>30 31         sbHtmlText.Append(32         sbHtmlText.AppendFormat(33         34     }

?

Pager V3.0

 Pager V3.0
翻页地址或事件<param name="pagerViewName">分页分部视图名称 8     <param name="displayMode">分页显示模式 9     10     string> onPageChange,1)">string pagerViewName,PagingDisplayMode displayMode = PagingDisplayMode.Always)
11 12         pager.OnPageChange = onPageChange;
13         pager.PagingDisplayMode = displayMode;
14          MvcHtmlString.Create(helper.Partial(pagerViewName,pager).ToHtmlString());
15     }

?

Summary

Pager V1.0 分页样式和翻页事件如果要修改都要修改 CSharp 代码

Pager V2.0 可以自定义翻页事件,但是要修改分页样式还是要修改 CSharp 代码

Pager V3.0 可以在自定义分页分部视图中修改翻页事件或地址和分页样式

End

现在已经将这个项目 MvcSimplePager 打包到 Nuget http://www.nuget.org/packages/MvcSimplePager/,你可以在VS中 nuget 包管理器中搜索 MvcSimplePager 进行使用。

自定义 MvcSimplePager 项目和示例代码:https://github.com/WeihanLi/MvcSimplePager ,你可以根据需要再进行自己的定制。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读