最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MVC HtmlHelper擴(kuò)展類(PagingHelper)實現(xiàn)分頁功能

 更新時間:2017年05月06日 14:59:14   作者:長毛象  
這篇文章主要為大家詳細(xì)介紹了MVC HtmlHelper擴(kuò)展,實現(xiàn)分頁功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

MVC HtmlHelper擴(kuò)展類PagingHelper實現(xiàn)分頁功能,供大家參考,具體內(nèi)容如下

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace HtmlHelperMvc.Models
{
 /// <summary>
 /// 分頁類如果一個頁面顯示兩個列表只需要復(fù)制該類到項目中重命名一個就可以
 /// </summary>
 public static class PagingHelper
 {
  #region 屬性Property
  /// <summary>
  /// 當(dāng)前頁碼
  /// </summary>
  private static int? _currentPage = null;
  /// <summary>
  /// 當(dāng)前頁碼
  /// </summary>
  public static int CurrentPage
  {
   get
   {
    return _currentPage ?? 1;
   }
   set
   {
    _currentPage = value;
   }
  }
  /// <summary>
  /// 每頁記錄條數(shù)
  /// </summary>
  private static int? _pageSize = null;
  /// <summary>
  /// 每頁記錄條數(shù)
  /// </summary>
  public static int PageSize
  {
   get
   {
    return _pageSize ?? 15;
   }
   set
   {
    _pageSize = value;
   }
  }
  /// <summary>
  /// 是否顯示上一頁
  /// </summary>
  public static bool HasPreviousPage
  {
   get
   {
    return (CurrentPage > 1);
   }
  }
  /// <summary>
  /// 是否顯示下一頁
  /// </summary>
  public static bool HasNextPage
  {
   get
   {
    return (CurrentPage < TotalPages);
   }
  }
  /// <summary>
  /// 當(dāng)前頁:
  /// </summary>
  public static string CurrentPageDisplayName { get; set; }
  /// <summary>
  /// 每頁顯示:
  /// </summary>
  public static string PageSizeDisplayName { get; set; }
  public static string FirstDisplayName { get; set; }
  public static string PreDisplayName { get; set; }
  public static string NextDisplayName { get; set; }
  public static string LastDisplayName { get; set; }
  public static string TotalCountDisplayName { get; set; }
  public static string TotalPagesDisplayName { get; set; }
  /// <summary>
  /// 總條數(shù)
  /// </summary>
  public static int TotalCount
  {
   get;
   set;
  }
  public static int TotalPages
  {
   get
   {
    return (int)Math.Ceiling(TotalCount / (double)PageSize);
    //return (TotalCount % PageSize == 0 ? TotalCount / PageSize : TotalCount / PageSize + 1);
   }
  }
  /// <summary>
  /// 設(shè)置分頁url eg:/Admin/Product/Index
  /// </summary>
  public static string PagingUrl
  {
   get;
   set;
  }
  /// <summary>
  /// 默認(rèn)page,設(shè)置分頁參數(shù)名 eg:/Admin/Product/Index?PagingParamName=1
  /// </summary>
  public static string PagingParamName
  {
   get;
   set;
  }
  #endregion
  #region Paging String
  /// <summary>
  /// MVC分頁 如果用jquery分頁只需要class不需要href,用以下實現(xiàn):
  /// $(".class值").live("click", function () {
  /// var page = $(this).attr("pagingParamName值");
  /// $("#order").html("").load("/Customer/Order?page="+page);
  /// });live自動給遍歷增加事件
  /// </summary>
  /// <param name="html"></param>
  /// <param name="htmlAttributes">new {@class="grey",pagingParamName="page",href="/Admin/Product/Index" rel="external nofollow" } pagingParamName默認(rèn)page,匿名類添加控件屬性</param>
  /// <returns></returns>
  public static MvcHtmlString Paging(this System.Web.Mvc.HtmlHelper html, object htmlAttributes)
  {
   RouteValueDictionary values = new RouteValueDictionary(htmlAttributes);
   #region 屬性賦值
   if (values["href"] != null)
   {
    PagingUrl = values["href"].ToString();
   }
   if (values["pagingParamName"] != null)
   {
    PagingParamName = values["pagingParamName"].ToString();
    values.Remove("pagingParamName");
   }
   else
   {
    PagingParamName = "page";
   }
   #endregion
   #region 分頁最外層div/span
   TagBuilder builder = new TagBuilder("div");//span
   //創(chuàng)建Id,注意要先設(shè)置IdAttributeDotReplacement屬性后再執(zhí)行GenerateId方法. 
   //builder.IdAttributeDotReplacement = "_";
   //builder.GenerateId(id);
   //builder.AddCssClass("");
   //builder.MergeAttributes(values);
   builder.InnerHtml = PagingBuilder(values);
   #endregion
   return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));//解決直接顯示html標(biāo)記
  }
  private static string PagingBuilder(RouteValueDictionary values)
  {
   #region 條件搜索時包括其他參數(shù)
   StringBuilder urlParameter = new StringBuilder();
   NameValueCollection collection = HttpContext.Current.Request.QueryString;
   string[] keys = collection.AllKeys;
   for (int i = 0; i < keys.Length; i++)
   {
    if (keys[i].ToLower() != "page")
    {
     urlParameter.AppendFormat("&{0}={1}", keys[i], collection[keys[i]]);
    }
   }
   #endregion
   //CurrentPage = Convert.ToInt32(HttpContext.Current.Request.QueryString["page"] ?? "0");
   StringBuilder sb = new StringBuilder();
   #region 分頁統(tǒng)計
   sb.AppendFormat("Total &nbsp;{0} &nbsp; Records Page &nbsp;{1} of &nbsp;{2} &nbsp; ", TotalCount, CurrentPage, TotalPages);
   #endregion
   #region 首頁 上一頁
   sb.AppendFormat(TagBuilder(values, 1, " First"));
   //sb.AppendFormat("<a href={0}?page=1{1}>First</a>&nbsp;",url,urlParameter);
   if (HasPreviousPage)
   {
    sb.AppendFormat(TagBuilder(values, CurrentPage - 1, " Prev "));
    //sb.AppendFormat("<a href={0}?page={1}{2}>Prev</a>&nbsp;", url, CurrentPage - 1, urlParameter);
   }
   #endregion
   #region 分頁邏輯
   if (TotalPages > 10)
   {
    if ((CurrentPage + 5) < TotalPages)
    {
     if (CurrentPage > 5)
     {
      for (int i = CurrentPage - 5; i <= CurrentPage + 5; i++)
      {
       sb.Append(TagBuilder(values, i, i.ToString()));
      }
     }
     else
     {
      for (int i = 1; i <= 10; i++)
      {
       sb.Append(TagBuilder(values, i, i.ToString()));
      }
     }
     sb.Append("...&nbsp;");
    }
    else
    {
     for (int i = CurrentPage - 10; i <= TotalPages; i++)
     {
      sb.Append(TagBuilder(values, i, i.ToString()));
     }
    }
   }
   else
   {
    for (int i = 1; i <= TotalPages; i++)
    {
     sb.Append("&nbsp;" + TagBuilder(values, i, i.ToString()) + "&nbsp");
    }
   }
   #endregion
   #region 下一頁 末頁
   if (HasNextPage)
   {
    sb.AppendFormat(TagBuilder(values, CurrentPage + 1, "Next"));
    //sb.AppendFormat("<a href={0}?page={1}{2}>Next</a>&nbsp;", url, CurrentPage + 1, urlParameter);
   }
   sb.AppendFormat(TagBuilder(values, TotalPages, "Last"));
   //sb.AppendFormat("<a href={0}?page={1}{2}>Last</a>",url,TotalPages,urlParameter);
   #endregion
   return sb.ToString();
  }
  private static string TagBuilder(RouteValueDictionary values, int i, string innerText)
  {
   values[PagingParamName] = i;
   TagBuilder tag = new TagBuilder("a");
   if (PagingUrl != null)
   {
    values["href"] = PagingUrl + "?" + PagingParamName + "= " + i + "&nbsp;&nbsp;&nbsp;";
   }
   if (CurrentPage == i && innerText != " First" && innerText != " Last")
   {
    values["id"] = "on";
   }
   else
   {
    tag.Attributes["id"] = "";
   }
   tag.MergeAttributes(values);
   tag.SetInnerText(innerText);
   return tag.ToString();
  }
  #endregion
 }
}

后臺Controller代碼

//
// GET: /Home/

public ActionResult Index(int? page)
{
 page = page ?? 1;
 PagingHelper.CurrentPage = Convert.ToInt32(page);
 PagingHelper.PageSize = 20;

 //{獲取數(shù)據(jù)集的中條數(shù),以及分頁的數(shù)據(jù)集}

 PagingHelper.TotalCount = 2000;
 return View();
}

前臺頁面代碼

@{
 ViewBag.Title = "Index";
}
@using HtmlHelperMvc.Models;
<h2>Index</h2>
<hr />
<style type="text/css">
 #on
 {
  color: #FFF;
  background-color: #337AB7;
  border-color: #337AB7;
 }

 .pagination a
 {
  margin-right: 3px;
  padding: 5px 10px;
  font-size: 12px;
  text-decoration: none;
  background-color: #fff;
  border: 1px solid #ddd;
  cursor: pointer;
  display: inline-block;
  border-radius: 3px;
 }

 a
 {
  color: #337ab7;
  text-decoration: none;
 }

 a
 {
  background-color: transparent;
 }

 *
 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
 }
</style>
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script type="text/javascript">
 $(function () {
  $(".pagination .active").live("click", function () {
   $("#page").val($(this).attr("page"));
   $("#form_Submit").submit();
  });
 });
</script>
<form id="form_Submit" action="/Home/Index" method="post">
 <div class="fix">
  <div class="page">
   <div class="pagination pagination-sm pull-right" id="pageDiv" style="margin: 0px 0;">
    <input type="hidden" id="page" name="page" value="@PagingHelper.CurrentPage" />
    @Html.Paging(new { @class = "active" })
   </div>
  </div>
 </div>
</form>

最終效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mvc下,3種窗口彈出設(shè)置的方法

    mvc下,3種窗口彈出設(shè)置的方法

    想做頁面美化,特別是在一個頁面中,只占了很小一塊的頁面,想做成彈出窗口樣式,稍微總結(jié)了下:
    2013-07-07
  • .NET Core使用HttpClient進(jìn)行表單提交時遇到的問題

    .NET Core使用HttpClient進(jìn)行表單提交時遇到的問題

    這篇文章主要介紹了.NET Core使用HttpClient進(jìn)行表單提交時遇到的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • ASP.NET MVC下拉框聯(lián)動實例解析

    ASP.NET MVC下拉框聯(lián)動實例解析

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC下拉框聯(lián)動實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 12306動態(tài)驗證碼啟發(fā)之ASP.NET實現(xiàn)動態(tài)GIF驗證碼(附源碼)

    12306動態(tài)驗證碼啟發(fā)之ASP.NET實現(xiàn)動態(tài)GIF驗證碼(附源碼)

    這篇文章主要介紹了受到12306動態(tài)驗證碼啟發(fā),實現(xiàn)ASP.NET動態(tài)GIF驗證碼,需要的朋友可以參考下
    2015-08-08
  • ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解

    這篇文章主要給大家介紹了關(guān)于在ASP.NET Core自定義中間件中如何讀取Request.Body與Response.Body的內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • asp.net內(nèi)置對象 Response對象使用介紹

    asp.net內(nèi)置對象 Response對象使用介紹

    這篇文章主要介紹了asp.net內(nèi)置對象:Response對象使用介紹,對Response對象感興趣的小伙伴們可以參考一下
    2015-11-11
  • WPF氣泡樣式彈窗效果代碼分享

    WPF氣泡樣式彈窗效果代碼分享

    這篇文章主要為大家詳細(xì)介紹了WPF氣泡樣式彈窗效果的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C# 無限級分類的實現(xiàn)

    C# 無限級分類的實現(xiàn)

    采用存儲過程實現(xiàn)遞歸邏輯,直接返回子分類列表的方式應(yīng)該有更好的性能,尤其是Web服務(wù)器與數(shù)據(jù)庫服務(wù)器不位于同一臺服務(wù)器上時,更會受網(wǎng)絡(luò)影響。
    2009-02-02
  • ASP.NET Core Zero模塊系統(tǒng)講解

    ASP.NET Core Zero模塊系統(tǒng)講解

    本文詳細(xì)講解了ASP.NET Core Zero模塊系統(tǒng),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • asp.net 動態(tài)生成rdlc報表(原創(chuàng))

    asp.net 動態(tài)生成rdlc報表(原創(chuàng))

    因為公司需求 研究微軟的Reportviewer 因為有許多特別要求所以動態(tài)調(diào)用 比較靈活 我的需求是 根據(jù)數(shù)據(jù)不同的合并表頭 (參考了隨心所欲的博客文檔 再次表示感謝)
    2011-12-12

最新評論

威信县| 乡城县| 丰镇市| 青铜峡市| 平潭县| 彰化市| 皋兰县| 东兰县| 黎城县| 贺州市| 乌审旗| 美姑县| 永登县| 英德市| 志丹县| 岑巩县| 方正县| 砀山县| 固始县| 清涧县| 南岸区| 文安县| 乳源| 霍林郭勒市| 广宗县| 万荣县| 博野县| 邢台市| 达州市| 昌宁县| 岳普湖县| 玛多县| 云梦县| 新乐市| 安化县| 马公市| 万安县| 汽车| 常宁市| 麦盖提县| 桑植县|