snu*_*mpy 28 validation entity-framework-4 asp.net-mvc-3
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; }
Run Code Online (Sandbox Code Playgroud)
我很确定我记得有一种简单的方法来普遍改变ErrorMessage但却无法回想起它.
编辑:
为了澄清,我试图普遍更改默认的ErrorMessage,以便我可以输入:
[StringLength(20)]
public string OfficePhone { get; set; }
Run Code Online (Sandbox Code Playgroud)
并有错误消息说:
最大长度为20.
blo*_*aak 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; }
Run Code Online (Sandbox Code Playgroud)
并StringLengthMessage在资源文件中添加字符串资源(已命名)
"Maximum length is {1}"
Run Code Online (Sandbox Code Playgroud)
消息定义一次,并且如果您改变了关于要测试的长度的想法,则有一个可变的占位符.
您可以指定以下内容:
更新
为了进一步减少重复,您可以继承StringLengthAttribute:
public class MyStringLengthAttribute : StringLengthAttribute
{
public MyStringLengthAttribute() : this(20)
{
}
public MyStringLengthAttribute(int maximumLength) : base(maximumLength)
{
base.ErrorMessageResourceName = "StringLengthMessage";
base.ErrorMessageResourceType = typeof (Resource);
}
}
Run Code Online (Sandbox Code Playgroud)
或者,FormatErrorMessage如果要添加其他参数,则可以覆盖.现在属性如下所示:
[MyStringLength]
public string OfficePhone { get; set; }
[MyStringLength]
public string CellPhone { get; set; }
Run Code Online (Sandbox Code Playgroud)
尝试
[ StringLength(20, ErrorMessage = "Maximum length is {1}") ]
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话应该是它.