访问Validator块ErrorMessage

时间:2012-02-16 19:11:48

标签: c# .net enterprise-library validation

public class Test 
{
    [RelativeDateTimeValidator(-10, DateTimeUnit.Year, 10, DateTimeUnit.Year, ErrorMessage = "Error")]
    public DateTime ADate { get; set; } 

    public void ValidateMyProperty() 
    {
        ADate = new DateTime(1900, 01, 01);

        ValidationResults vrs = Validation.Validate<Test>(this);
        foreach (var vr in vrs)
        {
            Print(vr.Message);
        }
    }
}

显示

The value must fall within the range "-10"(Year) - "10(Year) relative to now

但是,如何显示/访问我指定的错误消息(ErrorMessage =“Error”)?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您想要指定验证失败时收到的消息,我认为您正在寻找MessageTemplate属性。它也允许可替换的令牌。

来自文档:

public class Person
{
  [RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year,
           Ruleset="RuleSetA", MessageTemplate="Must be 18 years or older.")]
  public DateTime DateOfBirth
  {
    get
    {
      return dateOfBirth;
    }
  }
}

消息模板令牌

如果消息模板包含标记(例如,“{0}”),则验证程序将在创建ValidationResult时用值替换这些标记。相对日期时间验证器支持的令牌列在下表中。

令牌

含义

{0}

此标记表示正在验证的对象的值。尽管将原始值显示为验证消息的一部分可能很有用,但您必须小心避免注入攻击,方法是转义可用于攻击向用户传达消息的系统的任何字符。

{1}

此标记表示正在验证的对象的键。当验证程序附加到属性(如属性或字段)的成员时,该键将设置为成员名称。当验证器附加到对象时,该键为空,并且该标记由空字符串替换。

{2}

此标记表示验证程序实例上指定的标记。如果未提供任何标记,则该标记将替换为空字符串。