.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

 

结束语

      虽然造轮子常常是一件吃力不讨好的事情,但是怀着我觉得好用,或者想做一个好用的东东出来,推荐给朋友试试看的心情就会好很多,何况还是有许多热心人提供宝贵的建议:  )

posted @ 2010-10-29 16:50  小肖程序  阅读(702)  评论(2编辑  收藏  举报