StringLength验证的默认ErrorMessage比我想要的要长很多:
字段{Name}必须是最大长度为{StringLength}的字符串。
我想将其普遍改为:
最大长度为{StringLength}。
我想避免为我声明的每个字符串冗余地指定ErrorMessage:
[StringLength(20, ErrorMessage="Maximum length is 20")]
public string OfficePhone { get; set; }
[StringLength(20, ErrorMessage="Maximum length is 20")]
public string CellPhone { get; set; }
我很确定我记得有一种简单的方法来普遍改变ErrorMessage但却无法回想起它。
编辑:
为了澄清,我正在尝试普遍更改默认的ErrorMessage,以便我可以输入:
[StringLength(20)]
public string OfficePhone { get; set; }
并输入错误消息:
最大长度为20。
答案 0 :(得分:57)
您可以在众多属性
上指定StringLength属性,如下所示[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string OfficePhone { get; set; }
[StringLength(20, ErrorMessageResourceName = "StringLengthMessage", ErrorMessageResourceType = typeof(Resource))]
public string CellPhone { get; set; }
并在资源文件中添加字符串资源(名为StringLengthMessage
)
"Maximum length is {1}"
消息是一次定义的,并且如果你改变了对要测试的长度的想法,它就有一个可变的占位符。
您可以指定以下内容:
<强>更新强>
为了进一步减少重复,您可以继承StringLengthAttribute:
public class MyStringLengthAttribute : StringLengthAttribute
{
public MyStringLengthAttribute() : this(20)
{
}
public MyStringLengthAttribute(int maximumLength) : base(maximumLength)
{
base.ErrorMessageResourceName = "StringLengthMessage";
base.ErrorMessageResourceType = typeof (Resource);
}
}
如果您想添加其他参数,也可以覆盖FormatErrorMessage
。现在属性如下所示:
[MyStringLength]
public string OfficePhone { get; set; }
[MyStringLength]
public string CellPhone { get; set; }
答案 1 :(得分:6)
尝试
[ StringLength(20, ErrorMessage = "Maximum length is {1}") ]
如果我没记错的话应该是它。