天天看点

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

一、框架介绍

    本框架基于类属性(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是静态缓存的,需要清理或重新生成修改后的验证器标识才管用!

四、下载

继续阅读