ASP.NET MVC:DataAnnotation验证执行顺序

时间:2010-09-13 09:33:07

标签: validation asp.net-mvc-2

我在理解验证逻辑和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的一个问题,但仍未找到位置或原因。

1 个答案:

答案 0 :(得分:4)

仅当所有属性级验证器都成功时,才会运行类级验证器。此行为在ModelValidator类中编码。