Asp.net mvc 3 在web.config文件中忽略resourceProviderFactoryType
我一直试图在web.config文件中设置自定义resourceProviderFactory,但它总是被忽略,我的web.config文件如下所示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类从未被激发,在构造函数上设置断点
<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)),这个设置被完全取消是不是很奇怪?