【问题标题】:How can you get the first validation error on a property only using Validation Application Block?如何仅使用验证应用程序块获得属性的第一个验证错误?
【发布时间】:2010-09-29 14:37:48
【问题描述】:

如果我有两个验证器,一个 NotNullValidator 和一个 StringLengthValidator,有没有办法只得到一个空验证错误而不是两者。例如:

public class Test
{
    [NotNullValidator(MessageTemplate="Name is required"),
    StringLengthValidator(1,50, MessageTemplate="Name must be between 1 and 50 characters")]
    public string Name { get; set; }
}

Test test = new Test {Name = null};
ValidationResults r = Validation.Validate(test);
if (!r.IsValid)
{
    foreach (var test in r)
    {
        Console.WriteLine(test.Message);
    }
}

在这种情况下,我得到两个验证错误。我得到一个告诉我“名称是必需的”,另一个告诉我它应该在 1 到 50 个字符之间。我只想看到在这种情况下需要该名称。这可能吗?

【问题讨论】:

    标签: c# .net validation enterprise-library validation-application-bl


    【解决方案1】:

    只需删除 NotNullValidatorAttribute 即可。

    【讨论】:

    • 但这并不能告诉我没有指定该值。它告诉我它的长度不正确。这两个是不同的问题,我想分别处理。
    • @uriDium:当您指定两个验证规则(属性)时,VAB 将始终运行它们。您想要的行为是“运行验证器 1,并且只有当它有效时,才运行验证器 2”。开箱即用不支持此行为。您可以编写[SelfValidation] 方法或自定义NotNullStringLengthValidator 来获得此行为。
    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多