private void HandleValidationAttributes(T dto, ModelBindingContext bindingContext) { var dtoProperties = dto.GetType().GetProperties(); foreach (var property in dtoProperties) { // Check property type BaseValidationAttribute validationAttribute = property.PropertyType.GetCustomAttribute(typeof(BaseValidationAttribute)) as BaseValidationAttribute; // If not on property type, check the property itself. if (validationAttribute == null) { validationAttribute = property.GetCustomAttribute(typeof(BaseValidationAttribute)) as BaseValidationAttribute; } if (validationAttribute != null) { validationAttribute.Validate(property.GetValue(dto)); Dictionary <string, string> errors = validationAttribute.GetErrors(); if (errors.Count > 0) { foreach (var error in errors) { bindingContext.ModelState.AddModelError(error.Key, error.Value); } } } } }
private void ValidateAttribute(ModelBindingContext bindingContext, BaseValidationAttribute validator, object value) { validator.Validate(value); var errors = validator.GetErrors(); if (errors.Count > 0) { foreach (var error in errors) { bindingContext.ModelState.AddModelError(error.Key, error.Value); } } }
public void FormatPropertyForClientValidation() { BaseValidationAttribute.FormatPropertyForClientValidation(null); }
/// <summary> /// Get the message from the provided property for the provided attribute type. /// </summary> protected string GetAttributeMessage(System.Reflection.PropertyInfo property, Type attributeType) { BaseValidationAttribute attribute = (BaseValidationAttribute)Attribute.GetCustomAttribute(property, attributeType); return(attribute.Message); }
public virtual List <T> DataTableToList <T>(string filePath, string sheetName) where T : IExeclImport, new() { List <T> listEntity = new List <T>(); DataTable dt = excelReader.ReaderExcel(filePath, sheetName); if (dt.Rows.Count > this.MaxLeng) { this.ErrorMsg = $"超过最大条数{MaxLeng}"; return(null); } string TName = GetTName <T>(); #region 获取实体类映射集合 string ExeclMappingPropertyInfosKey = $"{TName}_ExeclMappingPropertys"; IEnumerable <PropertyInfo> PropertyInfos = CacheHelper.GetCache <IEnumerable <PropertyInfo> >(ExeclMappingPropertyInfosKey); if (PropertyInfos == null) { PropertyInfos = typeof(T).GetProperties().Where(m => m.GetCustomAttributes(typeof(ExeclMappingAttribute), true) != null); if (PropertyInfos != null) { CacheHelper.SetCache(ExeclMappingPropertyInfosKey, PropertyInfos); } } #endregion if (PropertyInfos == null || PropertyInfos.Count() <= 0) { this.ErrorMsg = $"传入实体无Execl映射信息"; return(null); } foreach (DataRow row in dt.Rows) { T t = new T(); foreach (PropertyInfo Prty in PropertyInfos) { #region 获取指定字段ExeclMappingAttribute string ExeclMappingPropertyKey = $"{TName}_{Prty.Name}_ExeclMappingPropertyKey"; string ExeclMappingPropertyKeyNoHave = $"{TName}_{Prty.Name}_ExeclMappingPropertyKeyNoHave"; ExeclMappingAttribute PrtyExeclMapping = CacheHelper.GetCache <ExeclMappingAttribute>(ExeclMappingPropertyKey); if (PrtyExeclMapping == null && !CacheHelper.IsExist(ExeclMappingPropertyKeyNoHave)) { PrtyExeclMapping = Prty.GetCustomAttribute <ExeclMappingAttribute>(true); if (PrtyExeclMapping != null) { CacheHelper.SetCache(ExeclMappingPropertyKey, PrtyExeclMapping); } else { CacheHelper.SetCache(ExeclMappingPropertyKeyNoHave, true); } } #endregion if (dt.Columns.Contains(PrtyExeclMapping.ExeclHeadName)) { // 判断此属性是否有Setter if (!Prty.CanWrite) { continue; //该属性不可写,直接跳出 } //取值 object value = row[PrtyExeclMapping.ExeclHeadName]; //如果非空,则赋给对象的属性 if (value != DBNull.Value && value != null && !string.IsNullOrEmpty(value.ToString())) { #region 获取指定字段ConvertValueAttribute string ConvertValuePropertyKey = $"{TName}_{Prty.Name}_ConvertValuePropertyKey"; string ConvertValuePropertyKeyNoHave = $"{TName}_{Prty.Name}_ConvertValuePropertyKeyNoHave"; ConvertValueAttribute appointValueAttribute = CacheHelper.GetCache <ConvertValueAttribute>(ConvertValuePropertyKey); if (appointValueAttribute == null && !CacheHelper.IsExist(ConvertValuePropertyKeyNoHave)) { appointValueAttribute = Prty.GetCustomAttribute <ConvertValueAttribute>(true); if (appointValueAttribute != null) { CacheHelper.SetCache(ConvertValuePropertyKey, appointValueAttribute); } else { CacheHelper.SetCache(ConvertValuePropertyKeyNoHave, true); } } #endregion if (appointValueAttribute != null) { value = appointValueAttribute.GetConvertValueValue(value); } #region 字段验证BaseValidationAttribute string BaseValidationPropertyKey = $"{TName}_{Prty.Name}_BaseValidationPropertyKey"; string BaseValidationPropertyKeyNoHave = $"{TName}_{Prty.Name}_BaseValidationPropertyKeyNoHave"; BaseValidationAttribute baseValidationAttribute = CacheHelper.GetCache <BaseValidationAttribute>(BaseValidationPropertyKey); if (baseValidationAttribute == null && !CacheHelper.IsExist(ConvertValuePropertyKeyNoHave)) { baseValidationAttribute = Prty.GetCustomAttribute <BaseValidationAttribute>(true); if (baseValidationAttribute != null) { CacheHelper.SetCache(BaseValidationPropertyKey, baseValidationAttribute); } else { CacheHelper.SetCache(BaseValidationPropertyKeyNoHave, true); } } #endregion object objValue = GetValue(Prty, value); Prty.SetValue(t, objValue, null); } } } listEntity.Add(t); } return(listEntity); }