我在理解验证逻辑和DataAnnotation验证方面遇到了一些麻烦:
使用以下模型:
[AlwaysInvalid]
public class TestModel
{
[Required]
public string Test { get; set; }
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public class AlwaysInvalidAttribute : ValidationAttribute
{
private readonly object typeId = new object();
public AlwaysInvalidAttribute() : base("Fail !") {}
public override object TypeId { get { return this.typeId; } }
public override bool IsValid(object value)
{
return false;
}
}
仅当Required属性有效时才会显示AlwaysInvalidAttribute错误消息:我无法同时获取这两个消息。有人知道为什么吗?我认为这是DefaultModelBinder的一个问题,但仍未找到位置或原因。
答案 0 :(得分:4)
仅当所有属性级验证器都成功时,才会运行类级验证器。此行为在ModelValidator
类中编码。