访问验证器块错误消息

本文关键字:错误 消息 验证 访问 | 更新日期: 2023-09-27 18:24:48

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

但是,如何播放/访问我指定的错误消息(错误消息 ="错误"(?

提前谢谢。

访问验证器块错误消息

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

此令牌表示正在验证的对象的密钥。当验证程序附加到类型(如属性或字段(的成员时,键将设置为成员名称。当验证程序附加到对象时,密钥为 null,令牌将替换为空字符串。

{2}

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