前言
简单易用是.Net Validator验证框架努力的目标。基于Attribute验证器标识,丰富的验证返回类型,提供可扩展的验证器接口......——又一个心愿和想法实质性的开始,开心ing : )
正文
一、框架介绍
本框架基于类属性(Property)的Attribute验证器标示,匹配属性(Property)名和Form、QueryString中的Key以及服务器端控件的ID名称,再根据验证器对数据进行校验。
验证器结构图
二、框架使用例子
2.1 常规验证
2.1.1 准备Model类User,注意引用命名空间using Lasy.Validator;
public
sealed
class
User
{
#region
Member Variable
private
string
username;
private
string
email;
private
int
userpermission;
#endregion
#region
Properties
///
<summary>
///
用户名
///
</summary>
[Required]
public
string
Username
{
get
{
return
username; }
set
{ username
=
value; }
}
///
<summary>
///
电子邮箱
///
</summary>
[Email]
public
string
Email
{
get
{
return
email; }
set
{ email
=
value; }
}
///
<summary>
///
用户权限
///
</summary>
[IntRange(
1
,
5
)]
public
int
Userpermission
{
get
{
return
userpermission; }
set
{ userpermission
=
value; }
}
#endregion
}
2.1.2 控制台测试类
static
void
Main(
string
[] args)
{
IDictionary
<
string
,
object
>
dict
=
new
Dictionary
<
string
,
object
>
();
dict.Add(
"
Username
"
,
"
over
"
);
dict.Add(
"
Email
"
,
"
over140gmail.com
"
);
dict.Add(
"
Userpermission
"
,
"
5
"
);
Validator validator
=
new
Validator(
typeof
(User));
Console.Write(
"
Validator Result:
"
);
Console.WriteLine(validator.Validate(dict).ErrorStringResult);
dict[
"
Email
"
]
=
"
[email protected]
"
;
Console.Write(
"
Validator Result:
"
);
Console.WriteLine(validator.Validate(dict).BoolResult);
Console.ReadLine();
}
2.1.3 结果显示截图
2.2 表单验证
2.2.1 User类
class
User
{
#region
Member Variable
private
string
username;
private
string
password;
#endregion
#region
Properties
///
<summary>
///
用户名
///
</summary>
[Required]
[MinLength(
5
, FailKeyDesc
=
"
用户名
"
)]
public
string
Username
{
get
{
return
username; }
set
{ username
=
value; }
}
///
<summary>
///
密码
///
</summary>
[Required]
public
string
Password
{
get
{
return
password; }
set
{ password
=
value; }
}
#endregion
}
2.2.2 测试页面
login.aspx
<
form id
=
"
form1
"
runat
=
"
server
"
>
用户名:
<
asp:TextBox ID
=
"
Username
"
runat
=
"
server
"
></
asp:TextBox
>
<
br
/>
密码:
<
asp:TextBox ID
=
"
Password
"
runat
=
"
server
"
></
asp:TextBox
>
<
br
/>
<
asp:Button runat
=
"
server
"
Text
=
"
登录验证
"
onclick
=
"
Unnamed1_Click
"
/>
</
form
>
按钮代码
protected
void
Unnamed1_Click(
object
sender, EventArgs e)
{
//
获取表单所有元素 this.Controls[3].Controls
if
(
new
Validator(
typeof
(User)).Validate(
this
.Username,
this
.Password).BoolResult)
{
Response.Write(
"
验证成功!
"
);
}
else
{
Response.Write(
"
验证失败!
"
);
}
}
2.2.3 效果
三、使用建议
3.1 如果已经做了客户端校验,服务器端从Request中提取表单数据进行操作,可以直接使用Validator(Type type, bool checkAll, bool setDefaultValue)构造函数,然后从ValuesResult中取得已经校验完毕IDictionary<string, object>数据。
3.2 NoValidator与ValuesResult在提取表单数据时配套使用。
3.3 调试的时候注意类的Attribute是静态缓存的,需要清理或重新生成修改后的验证器标识才管用!
四、下载
4.1 源代码 Src
4.2 文 档 Lasy.Validator.chm
结束语
虽然造轮子常常是一件吃力不讨好的事情,但是怀着我觉得好用,或者想做一个好用的东东出来,推荐给朋友试试看的心情就会好很多,何况还是有许多热心人提供宝贵的建议: )
本博其他你可能感兴趣的文章
1. NOD32升级账号更新器 [ C# | NOD32 | Eset ]
2. 用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件]
3. 新浪Flash下载器 [HttpWebRequest | 新浪视频]
4. 笨笨图片批量下载器 V0.3 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程] new