.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( 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,如需转载请自行联系原作者

相关文章
|
12天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
1月前
|
消息中间件 开发框架 监控
NET任务调度框架Hangfire使用指南
Hangfire 是一个用于 .NET 应用程序的开源任务调度框架,支持长时间运行任务、定时任务等。通过简单的安装配置,即可将任务从主线程分离,提升应用性能。支持多种数据库,提供丰富的任务类型如立即执行、延迟执行和周期性任务,并有可视化管理界面 Hangfire Dashboard。还支持安全性配置及扩展插件,如 Hangfire.HttpJob,适合各种复杂场景下的任务调度需求。
55 1
NET任务调度框架Hangfire使用指南
|
2月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
39 5
|
2月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
49 4
|
2月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
38 4
|
2月前
|
消息中间件 监控 数据可视化
基于.NET开源、功能强大且灵活的工作流引擎框架
基于.NET开源、功能强大且灵活的工作流引擎框架
|
2月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
2月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
2月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
2月前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架