一、框架介绍
本框架基于类属性(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; }
}
/// 电子邮箱
[Email]
public string Email
get { return email; }
set { email = value; }
/// 用户权限
[IntRange(1, 5)]
public int Userpermission
get { return userpermission; }
set { userpermission = value; }
}
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.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; }
/// 密码
public string Password
get { return password; }
set { password = value; }
}
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>
<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是静态缓存的,需要清理或重新生成修改后的验证器标识才管用!
四、下载