用于StringLength验证的默认ErrorMessage比我想要的长得多:
我想将其普遍更改为:
我想避免为我声明的每个字符串重复指定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; }
并显示错误消息:
最佳答案
您可以在多个属性上指定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; }
关于asp.net-mvc-3 - 修改默认的ErrorMessage以进行StringLength验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9540314/