/// <summary> /// /// </summary> /// <param name="validatorEnvironment"></param> /// <param name="validatorEnvironmentObject"></param> /// <param name="valueName"></param> /// <param name="htmlName"></param> /// <param name="nullOrEmptyable">是否允许为null或为空。输入null默认为不判断。首尾连续空格将被过滤(.Trim())</param> /// <returns></returns> public static ValidatorContainer <T> Validator <T>(this IValidatorEnvironment validatorEnvironment, T validatorEnvironmentObject, string valueName, string htmlName, bool?nullOrEmptyable = null) { if (validatorEnvironment.ModelState[htmlName] != null && validatorEnvironment.ModelState[htmlName].Errors.Count > 0) { //移除原有的ModelState中的"The value '' is invalid."错误 //TODO:可以使用Resource自行配置 validatorEnvironment.ModelState[htmlName].Errors.Clear(); } if (nullOrEmptyable != null && (validatorEnvironmentObject == null || string.IsNullOrEmpty(validatorEnvironmentObject.ToString().Trim()))) { if (nullOrEmptyable == true) //可为空 { return(null); //为空,返回,但是不记录错误 } else//不可为空 { var container = new ValidatorContainer <T>(validatorEnvironment, validatorEnvironmentObject, valueName, htmlName); return(container.NotNullOrEmpty(true)); } } else { return(new ValidatorContainer <T>(validatorEnvironment, validatorEnvironmentObject, valueName, htmlName));//不判断是否为空 } }
//public List<string> ErrorList //{ // get { return _errorList; } // set // { // _errorList = value; // this.IsValid = false; // } //} public ValidatorContainer(IValidatorEnvironment validatorEnvironment, T validatorEnvironmentObject, string valueName, string htmlName) { ValidatorObject = validatorEnvironmentObject; ValueName = valueName; HtmlName = htmlName; ModelState = validatorEnvironment.ModelState; ValidatorEnvironment = validatorEnvironment; IsValid = true; //ErrorList = new List<string>(); }
public static ValidatorContainer <T> Validator <T>(this IValidatorEnvironment validatorEnvironment, T validatorEnvironmentObject, string valueName, string htmlName) { return(Validator <T>(validatorEnvironment, validatorEnvironmentObject, valueName, htmlName, null)); }