.Net Validator验证框架 [ .Net | Validator Framework | Attribute ]

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 17:33   11   0

前言

简单易用是.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,如需转载请自行联系原作者

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP