如何覆盖和本地化ASP.NET MVC 4的客户端验证消息



我创建了带有本地化字符串的自定义验证器,这些字符串是从我的卫星资源程序集中加载的。现在我想覆盖默认的MVC消息,比如"{0}必须是一个数字"。

在本文中:http://martinnormark.com/asp-net-mvc-localize-numeric-data-val-number-validation作者说

我浏览了ASP.NET MVC 4的源代码,发现看起来像的变更集将修复此问题。简而言之可以定义自己的ResourceClassKey和MVC框架将在使用默认错误消息之前使用它。美好的

所以我开始研究如何使用新功能,但大多数解决方案似乎已经过时,不起作用,或者可能我做错了什么。

如何使用资源dll文件覆盖MVC 4中的客户端错误消息?MVC本身是否总是决定选择哪个资源程序集,或者我可以以某种方式强制它选择特定语言所需的资源程序集?

不知怎么的,这篇文章http://www.codeproject.com/Articles/42168/Localizing-ASP-NET-MVC没有出现在我之前的搜索中。

关键是手动添加App_GlobalResources文件夹并将资源程序集移动到那里,然后它才接收到我们的自定义消息。

由于某些原因,在Visual Studio 2012中创建MVC 4应用程序时缺少App_GlobalResources文件夹,因此我们认为不再需要它。但是,当深入挖掘MVC源代码时,我们发现MVC使用的是在App_GlobalResources中查找的HttpContext.GetGlobalResourceObject。哦,微软,拜托,你为什么这么做。。。我们花了三天时间寻找各种复杂的解决方案,只是因为你把最新MVC版本中的文件夹扔掉了。

最新更新