我应该在.net核心全球化中将Localizer传递给ViewData吗?

时间:2018-04-17 10:53:03

标签: asp.net-core .net-core asp.net-core-mvc asp.net-core-2.0

@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>

这有什么特别的用途吗?或者只是微软的麻烦?

1 个答案:

答案 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"];

不需要。但它是一种为布局页面提供信息/特定翻译的方法。