如何从自定义属性获取属性显示名称

时间:2010-11-07 00:37:46

标签: c# asp.net asp.net-mvc-2 data-annotations

我正在尝试创建一个最小长度验证属性,该属性将强制用户在文本框中输入指定的最小字符数

    public sealed class MinimumLengthAttribute : ValidationAttribute
        {
            public int MinLength { get; set; }

            public MinimumLengthAttribute(int minLength)
            {
                MinLength = minLength;
            }

            public override bool IsValid(object value)
            {
                if (value == null)
                {
                    return true;
                }
                string valueAsString = value as string;
                return (valueAsString != null && valueAsString.Length >= MinLength);

  }
    }

在MinimumLengthAttribute的构造函数中,我想设置错误消息,如下所示:

ErrorMessage =“{0}必须至少为{1}个字符”

如何获取属性的显示名称,以便填充{0}占位符?

2 个答案:

答案 0 :(得分:6)

{0}占位符会自动填充[Display(Name="<value>")]的值,如果[Display(Name="")]属性不存在则会显示名称属性。

答案 1 :(得分:2)

如果您的错误消息包含多个占位符,那么您的属性也应该覆盖FormatErrorMessage方法,如下所示:

public override string FormatErrorMessage(string name) {
    return String.Format(ErrorMessageString, name, MinLength);
}

您应该调用其中一个构造函数重载来指定属性的默认错误消息:

public MinimumLengthAttribute()
    : base("{0} must be at least {1} characters long") {
}
相关问题