Asp.net mvc 3 在web.config文件中忽略resourceProviderFactoryType

Asp.net mvc 3 在web.config文件中忽略resourceProviderFactoryType,asp.net-mvc-3,localization,globalization,Asp.net Mvc 3,Localization,Globalization,我一直试图在web.config文件中设置自定义resourceProviderFactory,但它总是被忽略,我的web.config文件如下所示 <globalization culture="auto" resourceProviderFactoryType="MyProject.CustomResourceFactory, MyProject"></globalization> 我的CustomResourceFactory类从未被激发,在构造函数上设置断点

我一直试图在web.config文件中设置自定义resourceProviderFactory,但它总是被忽略,我的web.config文件如下所示

<globalization culture="auto" resourceProviderFactoryType="MyProject.CustomResourceFactory, MyProject"></globalization>

我的CustomResourceFactory类从未被激发,在构造函数上设置断点从未达到

在全球化部分拼写错误的类名不会引发任何异常,这正常吗

我在不止一个项目中尝试过这一点(认为我正在做的项目配置错误或其他),但结果相同

我使用的是C#asp.net MVC3

有人知道为什么会发生这种情况吗?有没有办法在运行时更改ResourceProviderFactory


谢谢。

对mvc3中的razor视图进行了一些思考,我没有看到任何使用此resourceProviderFactory的证据,这就是为什么您的自定义资源提供程序没有被触动的原因,我猜此功能不适用于MVC,它只适用于Web表单

在MVC中使用资源时,只需指向您的Resx生成的类exmaple:

    @
    {
       var resources = MyResources.ResourceClass;
    }

<p>@resources.MyTitle</p>
@
{
var resources=MyResources.ResourceClass;
}
@参考资料.MyTitle

如果要使用加载资源的自定义类,只需将上面的变量resources指向不同的类

但我认为还有另一种方法可以实现这一目标

您可以将视图文件夹中web.config中的pageBaseType更改为您自己从WebViewPage继承的类

在此类中,可以创建一个属性,该属性返回加载资源的自定义类的实例

通过这样做,您以后可以在“视图”文件夹中的任何视图中访问此属性


做任何适合你情况的事。如果有更好的方法,请分享。

我遇到了同样的问题,不太理解你对第一个答案的评论。现在我已经解决了,但我想我会为其他人详细说明

他创建了助手来调用他的定制资源,作为调用的需求 视图中的
ViewContext.HttpContext.GetGlobalResourceObject(classKey,resourceKey)
非常长,这导致如下结果:

public static class CommonHtmlExtensions
{
    public static object GetGlobalResource(this HtmlHelper htmlHelper, string classKey, string resourceKey)
    {
        return htmlHelper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey);
    }
    //several other methods.
}
允许他在razor视图中使用
@Html.GetGlobalResource(“CommonText”,“Some_ResourceKey”)

对于在dataannotations中保持强类型和可用性也非常有用,下面的链接显示了如何使用T4模板为数据库中的每个资源项创建常量。

我发现,如果执行HttpContext.GetGlobalResourceObject(..),它将进入我的提供程序。我已经构建了自定义dataannotation属性,这些属性来自基本属性和html帮助程序,以显示本地化文本(html.Localize(type,key)),这个设置被完全取消是不是很奇怪?