asp.net-mvc-3 – 修改StringLength验证的默认ErrorMessage

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 修改StringLength验证的默认ErrorMessage前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
StringLength验证的默认ErrorMessage比我想要的要长很多:

The field {Name} must be a string with a maximum length of {StringLength}.

我想将其普遍改为:

Maximum length is {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; }

并有错误信息说:

Maximum length is 20.

解决方法

您可以在许多属性上指定StringLength属性,如下所示
[StringLength(20,ErrorMessageResourceName = "StringLengthMessage",ErrorMessageResourceType = typeof(Resource))]
public string OfficePhone { get; set; }
[StringLength(20,ErrorMessageResourceType = typeof(Resource))]
public string CellPhone { get; set; }

并在您的资源文件添加字符串资源(名为StringLengthMessage)

"Maximum length is {1}"

消息定义一次,并有一个变量占位符,如果你改变想法的长度来测试。

您可以指定以下内容

> {0} – 名称
> {1} – 最大长度
> {2} – 最小长度

更新

为了进一步减少重复,您可以对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相关文章