C#使用自己的错误消息扩展MVC MaxLengthAttribute

时间:2013-11-16 19:09:27

标签: c# asp.net-mvc

class MyMaxLength : MaxLengthAttribute
    {
        public static String MyErrorMessage = "Maksimalna dolžina za polje {0} je {1}";

        public MyMaxLength(int length)
        {
            new MaxLengthAttribute(length);
        }

        public override string FormatErrorMessage(string name)
        {
            if (!String.IsNullOrEmpty(ErrorMessage))
            {
                ErrorMessage = MyErrorMessage;
            }
            return String.Format(CultureInfo.CurrentUICulture, ErrorMessageString, name);
        }
    }

但我遇到了MyMaxLength(int length)构造函数的问题。永远不会召唤超类。如何使用预定义的消息创建自己的长度验证。

1 个答案:

答案 0 :(得分:2)

构造函数的语法错误。

这是你调用基础构造函数的方法:

    public MyMaxLength(int length)
            : base(length)           // invoke the base constructor
    {

    }

其他可能值得注意的是,如果要扩展属性,虽然它不是必需的,但强烈建议使用Attribute后缀。在某些情况下,框架将查找以Attribute结尾的类型名称。

因此,您的派生类可能被命名为:

   class MyMaxLengthAttribute : MaxLengthAttribute
   {
        public MyMaxLengthAttribute(int length)
               : base(length)
        {
        }