2012-03-04 27 views
3

我一直试图在web.config文件中设置自定义resourceProviderFactory但它总是被忽略,我的web.config文件看起来像下面resourceProviderFactoryType在web.config文件中忽略

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

我CustomResourceFactory类永远不会被解雇,在构造函数中设置断点永远不会到达。

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

我已经在多个项目中尝试了这个(认为我正在处理的项目配置有误或某些东西),但结果相同。

我使用C#asp.net MVC3,

有没有人有一个线索,为什么发生这种情况,是有没有办法改变ResourceProviderFactory在运行时?

谢谢。

回答

2

我遇到了同样的问题,并没有完全理解你对第一个答案的评论。现在我已经解决了它,但我认为我会为其他人详细说明。

http://publicityson.blogspot.ca/2010/11/aspnet-mvc-razor-view-engine-and.html

他创造的助手打电话给他定制资源,在视图中调用 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. 
} 

允许他使用@Html.GetGlobalResource("CommonText", "Some_ResourceKey")在剃刀视图。

对于在数据注解中保留强类型和可用的东西也非常有用,下面的链接显示如何使用T4模板为数据库中的每个资源项创建常量。 http://carrarini.blogspot.ca/2010/08/localize-aspnet-mvc-2-dataannotations.html

+1

这个设置只是简单地消失了吗? – 2014-02-27 16:05:17

+0

这似乎不适用于mvc 5! – hazjack 2017-08-16 04:00:44

0

对mvc3中的剃刀视图做一些思考,我没有看到使用这个resourceProviderFactory的任何证据,这就是为什么你的自定义资源提供者没有被触及,我想这个功能并不是用于MVC和它的唯一可用Web窗体,使用资源MVC

须由只是指向您的RESX生成的类,〔实施例:

@ 
    { 
     var resources = MyResources.ResourceClass; 
    } 

<p>@resources.MyTitle</p> 

,如果你想使用加载你的资源的自定义类,你可以简单点上面的变量资源到不同的分类s,

但这里也是我认为可以实现它的另一种方式。

你可以在浏览文件夹改变pageBaseType在web.config中自己的类,从WebViewPage

继承了这个类,你可以创建一个返回自定义类加载的实例的属性你的资源。

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

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

+0

那么我发现,如果做HttpContext.GetGlobalResourceObject(..)它会在我的提供者。我已经构建了基本的自定义数据引用属性,并使用html助手来显示本地化文本(Html.Localize(type,key)) – Michael 2012-03-22 17:31:51