1、在mvc下webform的分页控件不能用,只好自己山寨一个轻便的。
1 public class PageHelp
2 {
3 /**//// <summary>
4 /// 总页数
5 /// </summary>
6 public int TotalPageNum { get; set; }
7 /**//// <summary>
8 /// 当前页
9 /// </summary>
10 public int CurrentPageNum { get; set; }
11
12 private int pageNumSize = 5;
13 /**//// <summary>
14 /// 页码链接允许的数量,默认为5个链接
15 /// </summary>
16 public int PageNumSize
17 {
18 get { return pageNumSize; }
19 set { pageNumSize = value; }
20 }
21 /**//// <summary>
22 /// 是否允许向上翻页
23 /// </summary>
24 public bool canUp
25 {
26 get
27 {
28 if (CurrentPageNum == 1)
29 return false;
30 else
31 return true;
32 }
33 }
34 /**//// <summary>
35 /// 是否允许向下翻页
36 /// </summary>
37 public bool canDown
38 {
39 get
40 {
41 if (CurrentPageNum == TotalPageNum)
42 return false;
43 else
44 return true;
45 }
46 }
47 /**//// <summary>
48 /// 页码数组
49 /// </summary>
50 public int[] PageNumArray
51 {
52 get
53 {
54 if (TotalPageNum <= pageNumSize)
55 {
56 int[] pageArray = new int[TotalPageNum];
57 for (int i = 0; i < TotalPageNum; i++)
58 pageArray[i] = i + 1;
59 return pageArray;
60 }
61 else
62 {
63 int[] pageArray = new int[pageNumSize];
64 if (CurrentPageNum == 1 || TotalPageNum <= pageNumSize)
65 {
66 for (int i = 0; i < pageNumSize; i++)
67 pageArray[i] = i + 1;
68 }
69 else if (CurrentPageNum == TotalPageNum)
70 {
71 for (int i = 0; i < pageNumSize; i++)
72 pageArray[i] = TotalPageNum - pageNumSize + i + 1;
73 }
74 else
75 {
76 int numHalf = pageNumSize / 2;
77 if (CurrentPageNum - numHalf <= 0)
78 {
79 for (int i = 0; i < pageNumSize; i++)
80 pageArray[i] = i + 1;
81 }
82 else if (CurrentPageNum + (pageNumSize - numHalf) >= TotalPageNum)
83 {
84 for (int i = 0; i < pageNumSize; i++)
85 pageArray[i] = TotalPageNum - (pageNumSize - i - 1);
86 }
87 else
88 {
89 int i;
90 for (i = 0; i < numHalf; i++)
91 {
92 pageArray[i] = CurrentPageNum - numHalf + i;
93 }
94 for (int z = 1; z <= pageNumSize - numHalf; z++)
95 {
96 pageArray[i + z - 1] = CurrentPageNum + z - 1;
97 }
98 }
99 }
100 return pageArray;
101 }
102 }
103 }
104 public PageHelp(int totalPage, int currentPage, int pageNumSize)
105 {
106 TotalPageNum = totalPage;
107 CurrentPageNum = currentPage;
108 PageNumSize = pageNumSize;
109 }
110 public string PagePrint(string href)
111 {
112 string tableHtml = string.Empty;
113 string replace = "$page";
114 tableHtml += "<table cellpadding='0' cellspacing='0' class='" + "pagination " + "'><tr>";
115 tableHtml += "<td ><div class='pageinfo'> 共<span>" + TotalPageNum + "</span>" + "页<div></td>";
116 if (CurrentPageNum != 1)
117 {
118 tableHtml += "<td><a href='" + href.Replace("$page","1") + "'>第一页</a></td>";
119 tableHtml += "<td><a href='" + (href.Replace(replace,(CurrentPageNum - 1).ToString())) + "'>上一页</a></td>";
120 }
121 else
122 {
123 tableHtml += "<td><span class='cannot'>第一页</span></td>";
124 tableHtml += "<td><span class='cannot'>上一页</span></td>";
125 }
126 for (int i = 0; i < PageNumArray.Count(); i++)
127 {
128 if (PageNumArray[i] != CurrentPageNum)
129 {
130 tableHtml += "<td>";
131 tableHtml += "<a href='";
132 }
133 else
134 {
135 tableHtml += "<td>";
136 tableHtml += "<a class='current' href='";
137 }
138 tableHtml += href.Replace(replace,PageNumArray[i].ToString());
139 tableHtml += "'>";
140 tableHtml += PageNumArray[i];
141 tableHtml += "</a>";
142 tableHtml += "</td>";
143 }
144 if (canDown)
145 {
146 tableHtml += "<td><a href='" + (href.Replace(replace,(CurrentPageNum+1).ToString())) + "'>下一页</a></td>";
147 tableHtml += "<td><a href='" + href.Replace(replace,TotalPageNum.ToString())+ "'" + ">最后一页</a></td>";
148 }
149 else
150 {
151 tableHtml += "<td><span class='cannot'>下一页</span></td>";
152 tableHtml += "<td><span class='cannot'>最后一页</span></td>";
153 }
154 tableHtml += "</tr></table>";
155 return tableHtml;
156 }
157 }
2 {
3 /**//// <summary>
4 /// 总页数
5 /// </summary>
6 public int TotalPageNum { get; set; }
7 /**//// <summary>
8 /// 当前页
9 /// </summary>
10 public int CurrentPageNum { get; set; }
11
12 private int pageNumSize = 5;
13 /**//// <summary>
14 /// 页码链接允许的数量,默认为5个链接
15 /// </summary>
16 public int PageNumSize
17 {
18 get { return pageNumSize; }
19 set { pageNumSize = value; }
20 }
21 /**//// <summary>
22 /// 是否允许向上翻页
23 /// </summary>
24 public bool canUp
25 {
26 get
27 {
28 if (CurrentPageNum == 1)
29 return false;
30 else
31 return true;
32 }
33 }
34 /**//// <summary>
35 /// 是否允许向下翻页
36 /// </summary>
37 public bool canDown
38 {
39 get
40 {
41 if (CurrentPageNum == TotalPageNum)
42 return false;
43 else
44 return true;
45 }
46 }
47 /**//// <summary>
48 /// 页码数组
49 /// </summary>
50 public int[] PageNumArray
51 {
52 get
53 {
54 if (TotalPageNum <= pageNumSize)
55 {
56 int[] pageArray = new int[TotalPageNum];
57 for (int i = 0; i < TotalPageNum; i++)
58 pageArray[i] = i + 1;
59 return pageArray;
60 }
61 else
62 {
63 int[] pageArray = new int[pageNumSize];
64 if (CurrentPageNum == 1 || TotalPageNum <= pageNumSize)
65 {
66 for (int i = 0; i < pageNumSize; i++)
67 pageArray[i] = i + 1;
68 }
69 else if (CurrentPageNum == TotalPageNum)
70 {
71 for (int i = 0; i < pageNumSize; i++)
72 pageArray[i] = TotalPageNum - pageNumSize + i + 1;
73 }
74 else
75 {
76 int numHalf = pageNumSize / 2;
77 if (CurrentPageNum - numHalf <= 0)
78 {
79 for (int i = 0; i < pageNumSize; i++)
80 pageArray[i] = i + 1;
81 }
82 else if (CurrentPageNum + (pageNumSize - numHalf) >= TotalPageNum)
83 {
84 for (int i = 0; i < pageNumSize; i++)
85 pageArray[i] = TotalPageNum - (pageNumSize - i - 1);
86 }
87 else
88 {
89 int i;
90 for (i = 0; i < numHalf; i++)
91 {
92 pageArray[i] = CurrentPageNum - numHalf + i;
93 }
94 for (int z = 1; z <= pageNumSize - numHalf; z++)
95 {
96 pageArray[i + z - 1] = CurrentPageNum + z - 1;
97 }
98 }
99 }
100 return pageArray;
101 }
102 }
103 }
104 public PageHelp(int totalPage, int currentPage, int pageNumSize)
105 {
106 TotalPageNum = totalPage;
107 CurrentPageNum = currentPage;
108 PageNumSize = pageNumSize;
109 }
110 public string PagePrint(string href)
111 {
112 string tableHtml = string.Empty;
113 string replace = "$page";
114 tableHtml += "<table cellpadding='0' cellspacing='0' class='" + "pagination " + "'><tr>";
115 tableHtml += "<td ><div class='pageinfo'> 共<span>" + TotalPageNum + "</span>" + "页<div></td>";
116 if (CurrentPageNum != 1)
117 {
118 tableHtml += "<td><a href='" + href.Replace("$page","1") + "'>第一页</a></td>";
119 tableHtml += "<td><a href='" + (href.Replace(replace,(CurrentPageNum - 1).ToString())) + "'>上一页</a></td>";
120 }
121 else
122 {
123 tableHtml += "<td><span class='cannot'>第一页</span></td>";
124 tableHtml += "<td><span class='cannot'>上一页</span></td>";
125 }
126 for (int i = 0; i < PageNumArray.Count(); i++)
127 {
128 if (PageNumArray[i] != CurrentPageNum)
129 {
130 tableHtml += "<td>";
131 tableHtml += "<a href='";
132 }
133 else
134 {
135 tableHtml += "<td>";
136 tableHtml += "<a class='current' href='";
137 }
138 tableHtml += href.Replace(replace,PageNumArray[i].ToString());
139 tableHtml += "'>";
140 tableHtml += PageNumArray[i];
141 tableHtml += "</a>";
142 tableHtml += "</td>";
143 }
144 if (canDown)
145 {
146 tableHtml += "<td><a href='" + (href.Replace(replace,(CurrentPageNum+1).ToString())) + "'>下一页</a></td>";
147 tableHtml += "<td><a href='" + href.Replace(replace,TotalPageNum.ToString())+ "'" + ">最后一页</a></td>";
148 }
149 else
150 {
151 tableHtml += "<td><span class='cannot'>下一页</span></td>";
152 tableHtml += "<td><span class='cannot'>最后一页</span></td>";
153 }
154 tableHtml += "</tr></table>";
155 return tableHtml;
156 }
157 }
分页样式
1.pagination {}{
2 font-size: 80%;
3 }
4
5.pagination a {}{
6 text-decoration: none;
7 border: solid 1px #AAE;
8 color: #15B;
9}
10
11.pagination a, .pagination span {}{
12 display: block;
13 float: left;
14 padding: 0.3em 0.5em;
15 margin-right: 5px;
16 margin-bottom: 5px;
17}
18
19.pagination .current {}{
20 background: #26B;
21 color: #fff;
22 border: solid 1px #AAE;
23}
24
25.pagination .current.prev, .pagination .current.next{}{
26 color:#999;
27 border-color:#999;
28 background:#fff;
29}
30.cannot
31{}{
32 background: #26B;
33 color: #fff;
34 border: solid 1px #AAE;
35 color:#999 !important;
36 border-color:#999;
37 background:#fff;
38}
39div .pageinfo{}{ width:50px !important;}
1.pagination {}{
2 font-size: 80%;
3 }
4
5.pagination a {}{
6 text-decoration: none;
7 border: solid 1px #AAE;
8 color: #15B;
9}
10
11.pagination a, .pagination span {}{
12 display: block;
13 float: left;
14 padding: 0.3em 0.5em;
15 margin-right: 5px;
16 margin-bottom: 5px;
17}
18
19.pagination .current {}{
20 background: #26B;
21 color: #fff;
22 border: solid 1px #AAE;
23}
24
25.pagination .current.prev, .pagination .current.next{}{
26 color:#999;
27 border-color:#999;
28 background:#fff;
29}
30.cannot
31{}{
32 background: #26B;
33 color: #fff;
34 border: solid 1px #AAE;
35 color:#999 !important;
36 border-color:#999;
37 background:#fff;
38}
39div .pageinfo{}{ width:50px !important;}
使用示例
使用示例
1 <%=new PageHelp(totalPage,pageIndex,5).PagePrint("/DemoTalk/List/$page")%>
1 <%=new PageHelp(totalPage,pageIndex,5).PagePrint("/DemoTalk/List/$page")%>
效果:
2、[HandleError]失灵了,囧
这个问题很好解决。。。
<customErrors mode="On" />只要在web.config里加上这句就可以了,汗啊。。。
在Error页面的使用示例:
使用示例
1 Message:<%=((HandleErrorInfo)ViewData.Model).Exception.Message %>
1 Message:<%=((HandleErrorInfo)ViewData.Model).Exception.Message %>
3、不标明bind字段就stackoverflow的
asp.net mvc的ModelBinder很好很强大,可是如果你要构建的实体类的字段没有全部post过来,而且你也没用bind(...)显示标明要bind的属性的时候,呵呵,stackoverflow这个异常就会华丽的抛出。。。,为什么不能智能点,找不到属性你还找。。。,结果就溢出了,看来还有改进的余地。。。