从 System.ComponentModel.DataAnnotations.ValidationAttribute 创建了我自己的验证属性后,我希望能够从我的控制器中检测到该特定属性在模型上是否有效。
我的设置:
public class MyModel
{
[Required]
[CustomValidation]
[SomeOtherValidation]
public string SomeProperty { get; set; }
}
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// Custom validation logic here
}
}
现在,如何从控制器检测 CustomValidationAttribute 的验证是否成功?
我一直在查看 ModelState 中 ModelError 的 Exception 属性,但我无法从我的 CustomValidationAttribute 中添加自定义异常。
现在我已经求助于检查 ModelState 中的特定错误消息:
public ActionResult PostModel(MyModel model)
{
if(ModelState.Where(i => i.Value.Errors.Where((e => e.ErrorMessage == CustomValidationAttribute.SharedMessage)).Any()).Any())
DoSomeCustomStuff();
// The rest of the action here
}
并将我的 CustomValidationAttribute 更改为:
public class CustomValidationAttribute : ValidationAttribute
{
public static string SharedMessage = "CustomValidationAttribute error";
public override bool IsValid(object value)
{
ErrorMessage = SharedMessage;
// Custom validation logic here
}
}
我不喜欢依赖字符串匹配,这种方式 ErrorMessage 属性有点被滥用。
我有哪些选择?