【发布时间】:2016-03-29 08:20:22
【问题描述】:
我尝试在IsValid 类的IsValid 函数中添加这一行ModelState.AddModelError(string key, string errorMessage); 但失败了。
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = true)]
public class AtleastOneAttribute : ValidationAttribute, IClientValidatable
{
// For Server side
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
var oHobby=value as IEnumerable;
foreach (var _object in oHobby)
{
Hobby _oHobby = (Hobby)_object;
if (_oHobby.IsSelected)
{
return ValidationResult.Success;
}
}
}
ModelState.AddModelError("Hobbies", "Err message....");
return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
}
告诉我如何从ValidationAttribute类的IsValid函数访问ModelState.AddModelError?
谢谢
【问题讨论】:
-
什么失败了?有什么错误吗?
-
ModelState.AddModelError() 在 isValid 函数中不可访问。那么如何在代码中访问它呢?
-
您没有访问
ModelState,也没有在ValidationAttribute中添加ModelStateError。您似乎对该属性的作用感到困惑。当您返回ValidationResult而不是Success时,DefaultModelBinder在绑定过程中添加ModelStateError(并且ModelState.IsValid变为false