ASP.NET 核心 2.0:资源命名空间不可见



我正在尝试使 ASP.NET Core 2.0应用程序成为多语言。我在名为"Resource.it.resx"的文件夹"资源"下创建了一个资源文件。我将其访问修饰符设置为"公共",将其命名空间设置为"资源"。

(重新)构建解决方案后,我现在在 cshtml 代码中的 C# 代码中看不到此命名空间。

还有其他步骤要做吗?

您需要考虑两件事:

  1. 只有Resource.resx会生成命名空间,特定于区域性的资源(如 Resource.it.resx)不会生成命名空间。这是预期行为。
  2. ASP.NET Core 的本地化实践建议不要直接使用资源,而是使用 IStringLocalizer 查找本地化字符串。

我建议您在官方 MSDN 指南中阅读 ASP.NET 核心本地化的基础知识。在这里,您将找到在控制器、视图以及您需要它们的任何位置本地化字符串的示例。

首先要检查您的资源命名空间在控制器中是否可见,比如资源。

我没有,在这种情况下,我创建了emtpy资源类,例如我的资源名称是ServiceResources.en-US.resx,在同一文件夹中我也有ServiceResources.cs空类。

检查是否已使用 IStringLocalizer 类在 _ViewImports.cshtml 中正确导入命名空间。

最新更新