예제 #1
0
        /// <summary>
        /// 通过标记的枚举表的值,返回已实现了IDataUnique接口的类
        /// </summary>
        /// <param name="edu">枚举的表</param>
        /// <returns>返回指定表的验证类</returns>
        public static ICheckUnique InitDataUnique(EnumDataUnique edu)
        {
            //定义ICheckUnique接口变量
            ICheckUnique iDataUnique = null;

            switch (edu)                                          //判断枚举表
            {
            case EnumDataUnique.tb_UsersByCustomer:               //验证tb_UsersByCustomer表
                iDataUnique = new CheckUniqueByUsersByCustomer(); //初始化CheckUniqueByUsersByCustomer实现类
                break;

            case EnumDataUnique.tb_UsersBySystem:               //验证tb_UsersBySystem表
                iDataUnique = new CheckUniqueByUsersBySystem(); //初始化CheckUniqueByUsersBySystem实现类
                break;

            case EnumDataUnique.tb_UserByRole:               //验证tb_UserByRole表
                iDataUnique = new CheckUniqueByUserByRole(); //初始化CheckUniqueByUserByRole实现类
                break;

            case EnumDataUnique.tb_ForumArea:               //验证tb_ForumArea表
                iDataUnique = new CheckUniqueByForumArea(); //初始化CheckUniqueByForumArea实现类
                break;

            case EnumDataUnique.tb_ForumClassify:               //验证tb_ForumClassify表
                iDataUnique = new CheckUniqueByForumClassify(); //初始化CheckUniqueByForumClassify实现类
                break;
            }
            return(iDataUnique);
        }
예제 #2
0
파일: DataUnique.cs 프로젝트: Llrui/BBSSite
        }                      //构造方法

        //实现抽象类ValidationAttribute中IsValid方法,该方法用于验证属性值是否有效,Value为验证的值,validationContext为要验证的类
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)                //判断如果value值不为空
            {
                int KeyID = 0;                //定义其他条件查询的条件值变量
                if (Key != null && Key != "") //如果不为空,则表示需要制定其他条件查询,Key为属性的名称,例如“ID”
                {
                    //通过反射获取出条件属性的值
                    KeyID = Convert.ToInt32(validationContext.ObjectInstance.GetType().GetProperty(Key).GetValue(validationContext.ObjectInstance));
                }
                //通过传入表枚举值调用简单工厂模式类的InitDataUnique方法,并返回已实现了ICheckUnique接口的各实现类
                ICheckUnique iDataUnique = PublicInitiali.InitDataUnique(edu);
                //调用实现类中CheckUnique方法,参数分别为要验证的属性值、验证类型和其他条件值。方法实现了对数据库表的数据校验工作
                if (iDataUnique.CheckUnique((string)value, MyType, KeyID)) //如果验证成功,则返回true
                {
                    return(ValidationResult.Success);                      //返回验证成功
                }
            }
            return(new ValidationResult(null));//返回验证失败,value值为null
        }