在我的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本地化。
答案 0 :(得分:0)
您在HTML中包含的脚本包含jQuery验证插件的错误消息。您使用模型属性修饰的必需数据注释属性是ASP.NET验证系统。
尽管数据注释系统确实提供了客户端验证,但它使用的错误消息使用ASP.NET的本地化系统附加到服务器上标记中的属性。
假设您可以在jquery消息文件中找到可以满足您目的的错误消息,使用它们的一种方法是使用DataAnnotation属性的ErrorMessage属性为属性注入消息密钥而不是错误消息本身。然后,您可以向视图添加一个jQuery函数,该函数将从无效元素的相关属性中获取密钥(例如,data-val-required),以查找并使用从消息文件中检索到的字符串替换属性的内容。 / p>
所以(概括):
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;
});
});