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

时间:2017-10-21 11:41:12

标签: c# asp.net-mvc visual-studio-2017

我正在努力使ASP.NET Core 2.0应用程序成为多语言。我在名为“Resource.it.resx”的文件夹“Resources”下创建了一个资源文件。我将其访问修饰符设置为Public,将其Namespace设置为Resources。

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

还有其他一些步骤吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

您需要考虑两件事:

  1. 只有Resource.resx生成命名空间,特定于文化的资源(如Resource.it.resx)不会生成命名空间。这是预期的行为。
  2. ASP.NET Core的本地化实践建议不要直接使用资源,而是使用IStringLocalizer查找本地化字符串。
  3. 我建议您阅读ASP.NET核心本地化in the official MSDN guide的基础知识。在那里,您将找到在控制器,视图和您需要的位置本地化字符串的示例。