用户控件不读取资源文件...在WebForms .NET上正确组织资源文件?

时间:2011-08-24 18:27:47

标签: asp.net localization webforms resx ascx

我正在开发一个项目,它在根文件夹中有一个aspx文件,另一个名为“UserControls”的文件夹包含所有的ascx文件。我必须本地化它,所以我使用App_GlobalResources和App_LocalResources作为资源文件。但是,我遇到了用户控件的问题,因为他们没有阅读各自的资源文件。我开始做一些测试,我意识到如果它们放在各自包含文件夹内的App_LocalResources子文件夹而不是根文件夹中,它们只会读取资源文件。由于我有太多带有用户控件的子目录,我不想将每个本地资源文件放在其主包含文件夹中。它没有意义。有想法的人吗?提前谢谢。

2 个答案:

答案 0 :(得分:3)

在不查看项目文件的情况下,我猜不会从根App_LocalResources文件夹中读取资源的页面是其文件名与另一页面发生冲突的页面。例如。如果你有/cart/Default.aspx和/myaccount/Default.aspx,那么ASP.NET将不知道哪个匹配/App_LocalResources/Default.aspx.resx。这就是为什么它要求这些页面的资源文件在他们自己的子文件夹中:明确它们匹配的页面。

我想如果你想避免这种情况,你有三个选择:

  1. 将所有内容更改为全局资源。只要您确保资源名称组织良好并且显然它们适用于哪个页面,这并不是那么糟糕。
  2. 将页面文件名更改为唯一。这非常难看,因为它可能会破坏应用程序中的重定向,以及SEO。
  3. 不要使用ASP.NET资源进行本地化,推出自己的解决方案。说真的,资源是ASP.NET中许多看似有用的功能之一(参见主题,移动支持,角色),根据我的经验,这些功能无法很好地扩展到大型项目,并且最好忽略自定义解决方案。例如,如果您的ASP.NET应用程序调用需要返回本地化文本的中间层DLL,会发生什么?在这种情况下,要拥有自己的低级资源本地化系统要好得多。

答案 1 :(得分:0)

检查App_LocalResources目录是否位于usercontrol的同一文件夹中。