.Net Validator验证框架 [ .Net | Validator Framework | Attribute ]
引: 具体地址忘记了,我是以前存在window live spaces 现在搬过来备份
(该文章在代码范例上有些说明不全,看附件来补充对 C# Attribute 的应用)
前言
简单易用是.Net Validator验证框架努力的目标。基于Attribute验证器标识,丰富的验证返回类型,提供可扩展的验证器接口......——又一个心愿和想法实质性的开始,开心ing : )
正文
一、框架介绍
本框架基于类属性(Property)的Attribute验证器标示,匹配属性(Property)名和Form、QueryString中的Key以及服务器端控件的ID名称,再根据验证器对数据进行校验。
验证器结构图
二、框架使用例子
2.1 常规验证
2.1.1 准备Model类User,注意引用命名空间using Lasy.Validator;
1 public sealed class User
2 {
3 #region Member Variable
4 private string username;
5 private string email;
6 private int userpermission;
7 #endregion
8 #region Properties
9 /// <summary>
10 /// 用户名
11 /// </summary>
12 [Required]
13 public string Username
14 {
15 get { return username; }
16 set { username = value; }
17 }
18 /// <summary>
19 /// 电子邮箱
20 /// </summary>
21 [Email]
22 public string Email
23 {
24 get { return email; }
25 set { email = value; }
26 }
27 /// <summary>
28 /// 用户权限
29 /// </summary>
30 [IntRange(1, 5)]
31 public int Userpermission
32 {
33 get { return userpermission; }
34 set { userpermission = value; }
35 }
36 #endregion
37 }
2.1.2 控制台测试类
1 static void Main(string[] args)
2 {
3 IDictionary<string, object> dict = new Dictionary<string, object>();
4 dict.Add("Username", "over");
5 dict.Add("Email", "over140gmail.com");
6 dict.Add("Userpermission", "5");
7 Validator validator = new Validator(typeof(User));
8 Console.Write("Validator Result:");
9 Console.WriteLine(validator.Validate(dict).ErrorStringResult);
10 dict["Email"] = "over140@gmail.com";
11 Console.Write("Validator Result:");
12 Console.WriteLine(validator.Validate(dict).BoolResult);
13 Console.ReadLine();
14 }
2.1.3 结果显示截图
2.2 表单验证
2.2.1 User类
1 class User
2 {
3 #region Member Variable
4 private string username;
5 private string password;
6 #endregion
7 #region Properties
8 /// <summary>
9 /// 用户名
10 /// </summary>
11 [Required]
12 [MinLength(5, FailKeyDesc = "用户名")]
13 public string Username
14 {
15 get { return username; }
16 set { username = value; }
17 }
18 /// <summary>
19 /// 密码
20 /// </summary>
21 [Required]
22 public string Password
23 {
24 get { return password; }
25 set { password = value; }
26 }
27 #endregion
28 }
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>
按钮代码
1 protected void Unnamed1_Click(object sender, EventArgs e)
2 {
3 //获取表单所有元素 this.Controls[3].Controls
4 if (new Validator(typeof(User)).Validate(this.Username, this.Password).BoolResult)
5 {
6 Response.Write("验证成功!");
7 }
8 else
9 {
10 Response.Write("验证失败!");
11 }
12 }
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
结束语
虽然造轮子常常是一件吃力不讨好的事情,但是怀着我觉得好用,或者想做一个好用的东东出来,推荐给朋友试试看的心情就会好很多,何况还是有许多热心人提供宝贵的建议: )