日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發布時間:2023/12/4 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net mvc 自定义 pager 封装与优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

asp.net mvc 自定義 pager 封裝與優化

Intro

之前做了一個通用的分頁組件,但是有些不足,從翻頁事件和分頁樣式都融合在后臺代碼中,到翻頁事件可以自定義,再到翻頁和樣式都和代碼分離, 自定義分頁 pager 越來越容易擴展了。

HtmlHelper Pager擴展

Pager V1.0

  • /// <summary>

  • /// Pager V1.0

  • /// </summary>

  • /// <param name="helper">HtmlHelper</param>

  • /// <param name="pager">分頁信息</param>

  • /// <returns></returns>

  • public static MvcHtmlString Pager(this HtmlHelper helper, PagerModel pager)

  • {

  • StringBuilder sbHtmlText = new StringBuilder();

  • sbHtmlText.Append("<div style=\"text-align:center\"><nav><ul class=\"pagination\">");

  • if (pager.PageIndex <= 1)

  • {

  • sbHtmlText.Append("<li class=\"disabled\"><a href=\"javascript:void(0)\" aria-label=\"Previous\"><span aria-hidden=\"true\">?</span></a></li>");

  • }

  • else

  • {

  • sbHtmlText.AppendFormat("<li><a href=\"javascript:loadData(1)\" aria-label=\"1\"><span aria-hidden=\"true\">?</span></a></li>", pager.PageIndex - 1);

  • sbHtmlText.AppendFormat("<li><a href=\"javascript:loadData({0})\">{0}</a></li>", pager.PageIndex - 1);

  • }

  • sbHtmlText.AppendFormat("<li class=\"active\"><a href=\"javascript:void(0)\">{0}<span class=\"sr-only\">(current)</span></a></li>", pager.PageIndex);

  • if (pager.PageIndex >= pager.PageCount)

  • {

  • sbHtmlText.Append("<li class=\"disabled\"><a href=\"javascript:void(0)\" aria-label=\"Next\"><span aria-hidden=\"true\">?</span></a></li>");

  • }

  • else

  • {

  • sbHtmlText.AppendFormat("<li><a href=\"javascript:loadData({0})\">{0}</a></li>", pager.PageIndex + 1);

  • sbHtmlText.AppendFormat("<li><a href=\"javascript:loadData({0})\" aria-label=\"Next\"><span aria-hidden=\"true\">?</span></a></li>", pager.PageIndex + 1);

  • }

  • sbHtmlText.Append("</ul></nav>");

  • sbHtmlText.AppendFormat("<div><span>每頁有<strong>{0}</strong>條數據,一共有<strong>{1}</strong>頁,總計<strong>{2}</strong>條數據</span></div></div>", pager.PageSize, pager.PageCount, pager.TotalCount);

  • return MvcHtmlString.Create(sbHtmlText.ToString());

  • }

  • Pager V2.0

  • /// <summary>

  • /// Pager V2.0

  • /// </summary>

  • /// <param name="helper">HtmlHelper</param>

  • /// <param name="pager">分頁信息</param>

  • /// <param name="onPageChange">翻頁事件</param>

  • /// <returns></returns>

  • public static MvcHtmlString Pager(this HtmlHelper helper, PagerModel pager, Func<int, string> onPageChange)

  • {

  • StringBuilder sbHtmlText = new StringBuilder();

  • sbHtmlText.Append("<div style=\"text-align:center\"><nav><ul class=\"pagination\">");

  • if (pager.PageIndex <= 1)

  • {

  • sbHtmlText.Append("<li class=\"disabled\"><a href=\"javascript:void(0)\" aria-label=\"Previous\"><span aria-hidden=\"true\">?</span></a></li>");

  • }

  • else

  • {

  • sbHtmlText.AppendFormat("<li><a href=\"{0}\" aria-label=\"Previous\"><span aria-hidden=\"true\">?</span></a></li>", onPageChange(pager.PageIndex - 1));

  • sbHtmlText.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", onPageChange(pager.PageIndex - 1), pager.PageIndex - 1);

  • }

  • sbHtmlText.AppendFormat("<li class=\"active\"><a href=\"javascript:void(0)\">{0}<span class=\"sr-only\">(current)</span></a></li>", pager.PageIndex);

  • if (pager.PageIndex >= pager.PageCount)

  • {

  • sbHtmlText.Append("<li class=\"disabled\"><a href=\"javascript:void(0)\" aria-label=\"Next\"><span aria-hidden=\"true\">?</span></a></li>");

  • }

  • else

  • {

  • sbHtmlText.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", onPageChange(pager.PageIndex + 1), pager.PageIndex + 1);

  • sbHtmlText.AppendFormat("<li><a href=\"{0}\" aria-label=\"Next\"><span aria-hidden=\"true\">?</span></a></li>", onPageChange(pager.PageIndex + 1));

  • }

  • sbHtmlText.Append("</ul></nav>");

  • sbHtmlText.AppendFormat("<div><span>每頁有<strong>{0}</strong>條數據,一共有<strong>{1}</strong>頁,總計<strong>{2}</strong>條數據</span></div></div>", pager.PageSize, pager.PageCount, pager.TotalCount);

  • return MvcHtmlString.Create(sbHtmlText.ToString());

  • }

  • Pager V3.0

  • /// <summary>

  • /// Pager V3.0

  • /// </summary>

  • /// <param name="helper">HtmlHelper</param>

  • /// <param name="pager">分頁信息</param>

  • /// <param name="onPageChange">翻頁地址或事件</param>

  • /// <param name="pagerViewName">分頁分部視圖名稱</param>

  • /// <param name="displayMode">分頁顯示模式</param>

  • /// <returns></returns>

  • public static MvcHtmlString Pager(this HtmlHelper helper, PagerModel pager, Func<int, string> onPageChange, string pagerViewName, PagingDisplayMode displayMode = PagingDisplayMode.Always)

  • {

  • pager.OnPageChange = onPageChange;

  • pager.PagingDisplayMode = displayMode;

  • return MvcHtmlString.Create(helper.Partial(pagerViewName, pager).ToHtmlString());

  • }

  • Summary

    Pager V1.0 分頁樣式和翻頁事件如果要修改都要修改 CSharp 代碼

    Pager V2.0 可以自定義翻頁事件,但是要修改分頁樣式還是要修改 CSharp 代碼

    Pager V3.0 可以在自定義分頁分部視圖中修改翻頁事件或地址和分頁樣式,可以實現樣式數據代碼的分離

    End

    自定義 MvcSimplePager 項目和示例代碼:https://github.com/WeihanLi/MvcSimplePager

    對于 asp.net?core 也是支持的喲 (^U^)ノ~YO

    總結

    以上是生活随笔為你收集整理的asp.net mvc 自定义 pager 封装与优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。