1

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

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

我正在浏览 ASP.NET MVC 4 的源代码,发现一个看起来可以解决这个问题的变更集。简而言之,可以定义自己的 ResourceClassKey,MVC 框架会在使用默认错误消息之前使用它。好的!

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

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

4

1 回答 1

1

不知何故,这篇文章 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 版本中扔掉了那个文件夹。

于 2013-01-15T09:35:56.300 回答