_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】:

您可以将IViewLocalizerIHtmlLocalizer 组合为_Layout.cshtml。如果您在 Visual Studio 解决方案中定义资源文件夹,则可以将资源文件放在那里。

如果您在 ASP.net 核心应用程序中使用 razor 页面而不是 MVC 视图,您将在文件夹 Resources 中创建一个子文件夹 Pages 而不是 Views。将_Layout.no.resx 文件放在那里。例如Resources\Pages\_Layout.no.resx.

【讨论】:

以上是关于_Layout.cshtml 上的本地化的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI MVC 日期选择器本地化

模型不会从剃刀页面中的 _Layout.cshtml 页面中的 _Footer.cshtml 部分视图绑定

如何在 _layout.cshtml 中为不同区域动态渲染局部视图?

Razor 页面:从 _Layout.cshtml 设置 cookie

使用 jumbotron 时,RenderBody() 与 _Layout.cshtml 重叠

Asp.Net Core 入门—— 布局视图_Layout.cshtml