一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - MVC HtmlHelper擴(kuò)展類(PagingHelper)實(shí)現(xiàn)分頁(yè)功能

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

2020-05-04 15:44長(zhǎng)毛象 ASP.NET教程

這篇文章主要為大家詳細(xì)介紹了MVC HtmlHelper擴(kuò)展,實(shí)現(xiàn)分頁(yè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
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>
 /// 分頁(yè)類如果一個(gè)頁(yè)面顯示兩個(gè)列表只需要復(fù)制該類到項(xiàng)目中重命名一個(gè)就可以
 /// </summary>
 public static class PagingHelper
 {
  #region 屬性Property
  /// <summary>
  /// 當(dāng)前頁(yè)碼
  /// </summary>
  private static int? _currentPage = null;
  /// <summary>
  /// 當(dāng)前頁(yè)碼
  /// </summary>
  public static int CurrentPage
  {
   get
   {
    return _currentPage ?? 1;
   }
   set
   {
    _currentPage = value;
   }
  }
  /// <summary>
  /// 每頁(yè)記錄條數(shù)
  /// </summary>
  private static int? _pageSize = null;
  /// <summary>
  /// 每頁(yè)記錄條數(shù)
  /// </summary>
  public static int PageSize
  {
   get
   {
    return _pageSize ?? 15;
   }
   set
   {
    _pageSize = value;
   }
  }
  /// <summary>
  /// 是否顯示上一頁(yè)
  /// </summary>
  public static bool HasPreviousPage
  {
   get
   {
    return (CurrentPage > 1);
   }
  }
  /// <summary>
  /// 是否顯示下一頁(yè)
  /// </summary>
  public static bool HasNextPage
  {
   get
   {
    return (CurrentPage < TotalPages);
   }
  }
  /// <summary>
  /// 當(dāng)前頁(yè):
  /// </summary>
  public static string CurrentPageDisplayName { get; set; }
  /// <summary>
  /// 每頁(yè)顯示:
  /// </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è)置分頁(yè)url eg:/Admin/Product/Index
  /// </summary>
  public static string PagingUrl
  {
   get;
   set;
  }
  /// <summary>
  /// 默認(rèn)page,設(shè)置分頁(yè)參數(shù)名 eg:/Admin/Product/Index?PagingParamName=1
  /// </summary>
  public static string PagingParamName
  {
   get;
   set;
  }
  #endregion
  #region Paging String
  /// <summary>
  /// MVC分頁(yè) 如果用jquery分頁(yè)只需要class不需要href,用以下實(shí)現(xiàn):
  /// $(".class值").live("click", function () {
  /// var page = $(this).attr("pagingParamName值");
  /// $("#order").html("").load("/Customer/Order?page="+page);
  /// });live自動(dòng)給遍歷增加事件
  /// </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 分頁(yè)最外層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í)包括其他參數(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 分頁(yè)統(tǒng)計(jì)
   sb.AppendFormat("Total  {0}   Records Page  {1} of  {2}   ", TotalCount, CurrentPage, TotalPages);
   #endregion
   #region 首頁(yè) 上一頁(yè)
   sb.AppendFormat(TagBuilder(values, 1, " First"));
   //sb.AppendFormat("<a href={0}?page=1{1}>First</a> ",url,urlParameter);
   if (HasPreviousPage)
   {
    sb.AppendFormat(TagBuilder(values, CurrentPage - 1, " Prev "));
    //sb.AppendFormat("<a href={0}?page={1}{2}>Prev</a> ", url, CurrentPage - 1, urlParameter);
   }
   #endregion
   #region 分頁(yè)邏輯
   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("... ");
    }
    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(" " + TagBuilder(values, i, i.ToString()) + " ");
    }
   }
   #endregion
   #region 下一頁(yè) 末頁(yè)
   if (HasNextPage)
   {
    sb.AppendFormat(TagBuilder(values, CurrentPage + 1, "Next"));
    //sb.AppendFormat("<a href={0}?page={1}{2}>Next</a> ", 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 + "   ";
   }
   if (CurrentPage == i && innerText != " First" && innerText != " Last")
   {
    values["id"] = "on";
   }
   else
   {
    tag.Attributes["id"] = "";
   }
   tag.MergeAttributes(values);
   tag.SetInnerText(innerText);
   return tag.ToString();
  }
  #endregion
 }
}

后臺(tái)Controller代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//
// GET: /Home/
 
public ActionResult Index(int? page)
{
 page = page ?? 1;
 PagingHelper.CurrentPage = Convert.ToInt32(page);
 PagingHelper.PageSize = 20;
 
 //{獲取數(shù)據(jù)集的中條數(shù),以及分頁(yè)的數(shù)據(jù)集}
 
 PagingHelper.TotalCount = 2000;
 return View();
}

前臺(tái)頁(yè)面代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@{
 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>

最終效果圖:

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 母乳在线 | 色在线亚洲视频www 色欲麻豆国产福利精品 | 国产精品久久久久久网站 | 99久久精品免费看国产一区二区 | 成人国产在线播放 | 亚洲精品综合一二三区在线 | 亚洲激情 欧美 | 无遮挡h肉动漫在线观看电车 | 欧美艳星kagney1ynn | 无码骚夜夜精品 | 青草青青在线 | 亚洲毛片免费看 | 经典欧美gifxxoo动态图暗网 | 精品国产免费第一区二区 | 亚洲乱码一区二区三区国产精品 | 国色天香 社区视频 | 男人的天堂日本 | 国产福利不卡一区二区三区 | 国产日韩欧美成人 | 亚洲精品国产成人99久久 | 99视频在线观看免费视频 | 色色色资源站 | 女教师被学生糟蹋三天 | 寡妇一级毛片 | 男同互操 | 日韩综合一区 | 91庥豆果冻天美精东蜜桃传媒 | 全肉一女n男np高h双龙养成 | 国产理论片在线观看 | 小妇人电影免费完整观看2021 | 日韩在线1 | 色狠狠色狠狠综合天天 | 亚州精品永久观看视频 | 日韩亚洲国产欧美精品 | 国产精品久久久久久久久免费观看 | 热99这里有精品综合久久 | 亚洲AV人无码综合在线观看蜜桃 | 国产精品久久国产精品99盘 | 国产综合色在线视频区色吧图片 | 美女脱了内裤让男生尿囗 | 韩国最新三级网站在线播放 |