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

 

前言

     简单易用是.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(15)]
        
public int Userpermission
        {
            
get { return userpermission; }
            
set { userpermission = value; }
        }

        
#endregion

    }
复制代码

      2.1.2  控制台测试类

复制代码
        static void Main(string[] args)
        {

            IDictionary
<stringobject> dict = new Dictionary<stringobject>();
            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是静态缓存的,需要清理或重新生成修改后的验证器标识才管用!

 

  四、下载

    4.1  源代码  Src

    4.2  文   档  Lasy.Validator.chm

 

结束语

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

 

 

本博其他你可能感兴趣的文章

 

      1.      NOD32升级账号更新器 [ C# | NOD32 | Eset ]

      2.      用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件]

      3.      新浪Flash下载器 [HttpWebRequest | 新浪视频]

      4.      笨笨图片批量下载器 V0.3 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程] new

 

 

posted @   农民伯伯  阅读(5613)  评论(39编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示