前言
简单易用是.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 " ] = " over140@gmail.com " ; 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是静态缓存的,需要清理或重新生成修改后的验证器标识才管用!
本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/584213,如需转载请自行联系原作者