@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = Localizer["HomeTitle"];
}
<h1 class="page-header">@ViewData["HomeTitle"]</h1>
以下是microsoft的全球化和本地化教程的摘录。
我觉得很奇怪,我必须将Localizer传递给ViewData,而不是仅使用
<h1 class="page-head">@Localizer["HomeTitle"]</h1>
这有什么特别的用途吗?或者只是微软的麻烦?
答案 0 :(得分:1)
我认为这个例子过于复杂:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1#view-localization
可能他们的想法是:布局使用users
来设置html头中的ViewData["Title"]
。
除了在视图中放置<title/>
之外,主布局还可以使用ViewData["Title"] = Localizer["HomeTitle"];
。
所以你可以拥有layout.cshtml:
ViewData["Title"]
homepage.cshtml:
<head><title>@ViewData["Title"]</title></head>
contact.cshtml:
ViewData["Title"] = Localizer["HomeTitle"];
因此,您可以设置不同的标题,但仍然可以在layout.cshtml文件中定义page-layout / html(从而抽象地重复使用代码)。
ViewData["Title"] = Localizer["ContactTitle"];
不需要。但它是一种为布局页面提供信息/特定翻译的方法。