gpt4 book ai didi

asp.net - App_GlobalResources (ASP.NET) 中的子文件夹

转载 作者:行者123 更新时间:2023-12-02 14:17:39 28 4
gpt4 key购买 nike

是否可以将资源文件 (.resx) 放入 App_GlobalResources 内的子文件夹中?

例如:

/App_GlobalResources/someresources/myfile.resx

/App_GlobalResources/someresources/myfile.fr-fr.resx

/App_GlobalResources/othereresources/otherfile.resx

/App_GlobalResources/othereresources/otherfile.fr-fr.resx

或者,所有 .resx 文件是否都直接放置在 App_GlobalResources 中?

如果可以使用子文件夹,如何以编程方式访问子文件夹内的资源?

最佳答案

从技术上讲,是的,这是可能的,但存在一些陷阱。首先,让我向您展示一个例子。假设我的 App_GlobalResources 文件夹如下所示:

/App_GlobalResources
/Test
TestSubresource.resx
TestResource.resx

每个资源文件都有一个名为“TestString”的条目。我使用 Visual Studio 菜单添加了每个资源文件,因此它为我创建了一个类。默认情况下,添加到 App_GlobalResources 文件夹中的所有类都将具有相同的 Resource 命名空间。因此,如果我想使用类生成器并且希望在命名空间中进行 Test ,则需要进入 TestSubresource.Designer.cs 文件并手动更改命名空间。一旦我这样做了,我就可以执行以下操作:

var rootResource = Resources.TestResource.TestString;
var subResource = Resources.Test.TestSubResource.TestString;

我还可以使用 GetGlobalResourceObject 引用它们:

var rootResource = GetGlobalResourceObject( "TestResource", "TestString" );
var subResource1 = GetGlobalResourceObject( "TestSubresource", "TestString" );

请注意,我仍然使用“TestSubresource”作为引用该文件中的资源的方法,即使它位于子文件夹中。现在,需要注意的一点是,App_GlobalResources 中所有文件夹中的所有文件都必须是唯一的,否则您的项目将引发运行时错误。如果我将名为“TestResource.resx”的资源添加到/Test,它将引发以下运行时错误:

The resource file '/App_GlobalResources/TestResource.resx' cannot be used, as it conflicts with another file with the same name.).

即使我更改新资源上的命名空间,情况也是如此。

所以,总而言之,是的,这是可能的,但是由于 App_GlobalResources 文件夹结构的不同部分中有两个同名的资源文件,因此会增加出现运行时错误的可能性,这是允许的文件系统,但不是 .NET 的。

关于asp.net - App_GlobalResources (ASP.NET) 中的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com