【问题标题】:JQuery validate ignore localization files (ASP.NET MVC)JQuery 验证忽略本地化文件 (ASP.NET MVC)
【发布时间】:2013-07-01 09:15:08
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我向我的模型添加了验证属性:

public class MyModel
{
    [Required]
    public string Name { get; set; }
    ...
}

我还在我的 HTML 中添加了本地化文件:

<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/localization/messages_de.js"></script>

但是,验证消息仍未翻译,我只看到英文消息。生成的 HTML 如下所示:

<input data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="">

如何在不在服务器端创建自己的翻译的情况下使本地化与 ASP.NET MVC 一起工作?我想使用现有的 javascript 本地化。

【问题讨论】:

    标签: jquery asp.net-mvc jquery-validate


    【解决方案1】:

    您在 HTML 中包含的脚本包含 jQuery 验证插件的错误消息。用于修饰模型属性的必需数据注释属性是一个 ASP.NET 验证系统。

    虽然数据注释系统确实提供了客户端验证,但它使用的错误消息使用 ASP.NET 的本地化系统附加到服务器上标记中的属性。

    假设您可以在 jquery 消息文件中找到可以满足您的目的的错误消息,使用它们的一种方法是使用 DataAnnotation 属性的 ErrorMessage 属性为属性注入消息键,而不是错误消息本身。然后,您可以在视图中添加一个 jQuery 函数,该函数将从无效元素的相关属性(例如 data-val-required)中获取键,以查找并用从消息文件中检索到的字符串替换属性的内容。

    所以(大致):

    public class MyModel
    {
        [Required(ErrorMessage="messageKey")]
        public string Name { get; set; }
        ...
    }
    
    $(document).ready(function () {
        var elem = $("input[data-val-required]");
        elem.val(function lookupMessage() {
            var key = elem.val();
            var message = dosomethingWith(key); // lookup value
            return message;
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多