访问验证器块的ErrorMessage

访问验证器块的ErrorMessage

问题描述:

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); 
     } 
    } 
} 

此显示访问验证器块的ErrorMessage

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

然而,我怎样diplay /访问,我已指定的错误消息(的ErrorMessage = “错误”)?

在此先感谢。

如果您想指定验证失败时收到的消息,我认为您正在寻找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}

此令牌表示验证器实例上指定的标记。如果未提供标记,则标记将被替换为空字符串。

+0

好东西,谢谢。 – Craig 2012-02-16 19:36:46