IViewLocalizer获取值错误,IViewLocalizer,获取的为什么是key,而不是value
IViewLocalizer,获取的为什么是key
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
20条回答 默认 最新
关注 获得0.60元问题酬金 引自免费微信小程序:皆我百晓生
针对您提到的问题,即在.NET Core项目中使用
IViewLocalizer
时获取到的是键(key)而非预期的值(value),以下是可能的原因及相应的解决步骤:原因分析:
-
资源文件未正确配置或缺少所需键值对: 确保您的视图对应的资源文件(通常为
.resx
格式,如Views/Home/Index.en-US.resx
等)已正确创建并包含所查找的键(key)及其对应的翻译值(value)。 -
资源文件命名或位置不符合约定:
IViewLocalizer
会根据视图文件的位置自动寻找与之同名且位于同一目录下的资源文件。例如,对于Views/Home/Index.cshtml
视图,对应的资源文件应为Views/Home/Index.xx-YY.resx
(其中xx-YY
代表语言文化代码)。确保资源文件的命名、路径以及文化代码设置正确。 -
视图中的
IViewLocalizer
实例化或使用不当: 检查视图中是否正确初始化了IViewLocalizer
实例,并在调用其方法获取字符串时传入正确的键(key)。 -
应用程序的文化设置与请求不符: 确认应用程序的本地化设置(如
Startup.cs
中的ConfigureServices
和Configure
方法)是否支持所需的语种,并且客户端请求携带的文化信息与资源文件匹配。
解决步骤:
步骤一:检查资源文件
- 打开解决方案资源管理器,定位到包含视图的
Resources
目录。 - 查看对应视图的资源文件(如
Index.en-US.resx
),确认其中是否存在您试图通过IViewLocalizer
获取的键(key),并且具有相应的值(value)。
步骤二:验证资源文件命名与位置
- 确保资源文件遵循以下命名和位置规则:
- 与视图文件在同一目录下。
- 文件名与视图文件相同,后缀为
.resx
。 - 包含文化代码,如
en-US
、zh-CN
等。
步骤三:审查视图中的
IViewLocalizer
使用- 在视图顶部,确保
IViewLocalizer
实例已被正确注入:@using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer
- 检查使用
IViewLocalizer
获取字符串的代码片段,确保键(key)正确无误:<label>@Localizer["PatientID"]</label>
步骤四:检查应用程序本地化设置
-
在
Startup.cs
的ConfigureServices
方法中,添加本地化服务和选项:services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization();
-
在
Configure
方法中,设置请求文化提供者和默认请求文化:var supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("zh-CN"), new CultureInfo("zh-Hans"), new CultureInfo("zh-Hant") }; app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("en-US"), SupportedCultures = supportedCultures, SupportedUICultures = supportedCultures });
完成以上步骤后,重新编译并运行应用,应该能正确通过
IViewLocalizer
获取到资源文件中的值(value)。如果问题依然存在,请进一步检查其他可能导致问题的因素,如中间件顺序、控制器或路由设置等。解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥15 能给我一些人生建议吗
- ¥15 mac电脑,安装charles后无法正常抓包
- ¥18 visio打开文件一直显示文件未找到
- ¥15 请教一下,openwrt如何让同一usb储存设备拔插后设备符号不变?
- ¥30 使用quartz框架进行分布式任务定时调度,启动了两个实例,但是只有一个实例参与调度,另外一个实例没有参与调度,不知道是为什么?请各位帮助看一下原因!!
- ¥50 怎么获取Ace Editor中的python代码后怎么调用Skulpt执行代码
- ¥30 fpga基于dds生成幅值相位频率和波形可调的容易信号发生器。
- ¥15 R语言shiny包和ncdf4包报错
- ¥15 origin绘制有显著差异的柱状图和聚类热图
- ¥20 simulink实现滑模控制和pid控制对比,提现前者优势