代码之家  ›  专栏  ›  技术社区  ›  Marty

Silverlight 4:内置数据注释验证异常的本地化

  •  5
  • Marty  · 技术社区  · 14 年前

    我想在我的Silverlight应用程序中使用数据注释来处理验证。内置的验证属性(主要是StringLength和Required)非常好,使使用非常容易。然而,它们似乎有一个关键的缺陷。例如,如果我的区域设置为fr-ca,则验证异常仍为英文-“需要名称字段”、“字段名必须是最大长度为20”的字符串等。

    这是一个 专业 问题。这意味着,如果要为内置验证属性添加本地化的错误消息,则必须手动将ErrorMessage/ErrorMessageResourceType添加到 我的业务层中每个可验证属性的每个验证属性 ,并手动为每个错误消息添加已翻译的字符串。

    所以…我是不是错过了什么?是否有方法自动本地化内置验证属性?或者其他更简单的方法?或者我完全不走运了,还是坚持走手动路线?

    如有任何意见或想法,我们将不胜感激。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Marty    14 年前

    好的,我只是通过对内置验证属性进行子类化来绕过这个问题。问题解决了!

    internal class LocalizedStringLengthAttribute : StringLengthAttribute
    {
        public LocalizedStringLengthAttribute(int maximumLength)
            : base(maximumLength)
        {
    
        }
    
        public override string FormatErrorMessage(string name)
        {
            return String.Format(CultureInfo.CurrentUICulture, LanguageResources.Resource.Error_StringLength, name, MaximumLength);
        }
    }