} //构造方法 //实现抽象类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 }
/// <summary> /// 通过调用构造资源路径类向视图动态数据类型Urls加载资源实体数据 /// </summary> public static void SetUrls(dynamic ViewBag, UrlHelper Url) { ViewBag.Urls = PublicInitiali.InitGettingUrl(Url); }