【问题标题】:User Controls not reading Resource Files... Organize Resource Files Properly on WebForms .NET?用户控件不读取资源文件...在 WebForms .NET 上正确组织资源文件?
【发布时间】:2011-08-24 18:27:47
【问题描述】:

我现在正在处理一个项目,该项目在根文件夹中有 aspx 文件和一个名为“UserControls”的文件夹,其中包含所有 ascx 文件。我必须对其进行本地化,因此我使用 App_GlobalResources 和 App_LocalResources 作为资源文件。但是,我对用户控件有疑问,因为他们没有读取各自的资源文件。我开始进行一些测试,我意识到他们只读取资源文件,如果它们被放置在它们各自包含文件夹内的 App_LocalResources 子文件夹中,而不是在根文件夹中。由于我有太多带有用户控件的子目录,我不想将每个本地资源文件放在其主文件夹中。这没有任何意义。有人有一些想法吗?提前致谢。

【问题讨论】:

    标签: asp.net localization webforms resx ascx


    【解决方案1】:

    如果不查看您的项目文件,我会猜测未从根 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 - 我经历了与您相同的事情,只是放弃了尝试使用本地资源。
    • 如你所说,我有两个名为 Default.aspx 的文件......我必须保留资源,因为它是一个已经投入生产的项目,所以现在没有太多工作要做......无论如何感谢您的想法!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多