我正在尝试创建一个最小长度验证属性,该属性将强制用户在文本框中输入指定的最小字符数
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}占位符?
答案 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") {
}