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
}
public class PageHelp2

{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 PageNumSize17

{18

get
{ return pageNumSize; }19

set
{ pageNumSize = value; }20
}21

/**//// <summary>22
/// 是否允许向上翻页23
/// </summary>24
public bool canUp25

{26
get27

{28
if (CurrentPageNum == 1)29
return false;30
else31
return true;32
}33
}34

/**//// <summary>35
/// 是否允许向下翻页36
/// </summary>37
public bool canDown38

{39
get40

{41
if (CurrentPageNum == TotalPageNum)42
return false;43
else44
return true;45
}46
}47

/**//// <summary>48
/// 页码数组49
/// </summary>50
public int[] PageNumArray51

{52
get53

{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
else62

{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
else75

{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
else88

{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
else122

{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
else134

{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
else150

{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
.cannot31

{
}{32
background: #26B;33
color: #fff;34
border: solid 1px #AAE;35
color:#999 !important;36
border-color:#999;37
background:#fff;38
}39

div .pageinfo{
}{ width:50px !important;}使用示例
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 %>
3、不标明bind字段就stackoverflow的
asp.net mvc的ModelBinder很好很强大,可是如果你要构建的实体类的字段没有全部post过来,而且你也没用bind(...)显示标明要bind的属性的时候,呵呵,stackoverflow这个异常就会华丽的抛出。。。,为什么不能智能点,找不到属性你还找。。。,结果就溢出了,看来还有改进的余地。。。