【问题标题】:Accessing Validator block ErrorMessage访问验证器块 ErrorMessage
【发布时间】:2012-03-08 05:16:56
【问题描述】:
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")?

提前致谢。

【问题讨论】:

    标签: c# .net enterprise-library validation


    【解决方案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}

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

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多