_Layout.cshtml 上的本地化
Posted
技术标签:
【中文标题】_Layout.cshtml 上的本地化【英文标题】:Localization on _Layout.cshtml 【发布时间】:2017-09-19 18:18:27 【问题描述】:我正在尝试在 _Layout.cshtml 上应用本地化
_Layout.cshtml
@using Microsoft.AspNetCore.Http.Extensions
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@inject Microsoft.ApplicationInsights.AspNetCore.javascriptSnippet JavaScriptSnippet
@inject IViewLocalizer LayoutLocalizer
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div style="margin:38px;margin-top:56px;" class="hidden-sm-down">
<h2>@LayoutLocalizer["WelcomeHeader"] <b class="text_border_darkblue">MyTitle</b></h2>
<div style="text-align:center;margin-top:42px;">
@LayoutLocalizer["WelcomeSub"]
</div>
</div>
</body>
</html>
资源文件被命名为:Views.Shared._Layout.no.resx(我试过重命名为 views.shared.Layout.no.resx祝你好运)
【问题讨论】:
【参考方案1】:您必须在视图的同一路径中创建一个 _Layout.no.resx 文件,但作为“资源”文件夹的根目录。查看示例图片:
有一个视频阐明了 Location 的使用参见here
【讨论】:
【参考方案2】:解决方案
使用资源文件实现 SharedResources 并在 共享视图中的 SharedResources 对象
【讨论】:
链接不再有效【参考方案3】:您可以将IViewLocalizer
和IHtmlLocalizer
组合为_Layout.cshtml
。如果您在 Visual Studio 解决方案中定义资源文件夹,则可以将资源文件放在那里。
如果您在 ASP.net 核心应用程序中使用 razor 页面而不是 MVC 视图,您将在文件夹 Resources 中创建一个子文件夹 Pages 而不是 Views。将_Layout.no.resx
文件放在那里。例如Resources\Pages\_Layout.no.resx
.
【讨论】:
以上是关于_Layout.cshtml 上的本地化的主要内容,如果未能解决你的问题,请参考以下文章
模型不会从剃刀页面中的 _Layout.cshtml 页面中的 _Footer.cshtml 部分视图绑定
如何在 _layout.cshtml 中为不同区域动态渲染局部视图?
Razor 页面:从 _Layout.cshtml 设置 cookie