要在ASP.NET Core 7.0 Razor页面视图模型中解决本地化字符串只显示为键的问题,您可以按照以下步骤进行操作:
步骤1:确保已正确设置本地化服务。 在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddRazorPages().AddViewLocalization();
步骤2:创建资源文件。 在项目的根目录下创建一个名为Resources的文件夹,并在其中添加一个名为SharedResources.resx的资源文件。在该资源文件中添加要本地化的字符串。
步骤3:在视图模型中使用本地化字符串。 在需要本地化的视图模型中,添加一个IStringLocalizer属性,并在构造函数中进行注入。然后,使用IStringLocalizer实例来获取本地化字符串。
using Microsoft.Extensions.Localization;
public class MyViewModel
{
private readonly IStringLocalizer _localizer;
public MyViewModel(IStringLocalizer localizer)
{
_localizer = localizer;
}
public string LocalizedString => _localizer["Hello"];
}
步骤4:在视图中显示本地化字符串。 在Razor页面中,通过将ViewModel的LocalizedString属性显示在HTML标签中来显示本地化字符串。
@Model.LocalizedString
步骤5:生成并运行应用程序。 使用dotnet命令或Visual Studio生成并运行应用程序。您应该能够看到视图中显示的本地化字符串,而不是键。
请注意,为了使本地化工作正常,确保资源文件的Build Action属性设置为Embedded resource,并且包含正确的本地化字符串键值对。
希望这可以帮助到您!