在所有 ASP.Net 个核心 Razor 视图中注入服务

Inject a service in all ASP.Net Core Razor views

如何将服务注入所有 Razor 视图?

在我需要访问服务(存储本地化文本)的视图中,我可以像这样注入它:

@inject IResourceHelper _resourceHelper

然后我可以像这样使用它...:[=​​14=]

<a id="somelink" title="@(_resourceHelper.GetText("somelink-title"))"></a>

工作正常。但是,由于我在所有视图中都需要它(几乎),所以我想只注入一次 - 并且随处可用。

我看向了 _ViewImports.cshtml,这似乎很适合这样的事情——我已经在其中添加了一些标签助手,如下所示:

@addTagHelper MyProject.Internationalization.TagHelpers.*, MyProject.Core

我已经尝试在那里添加一个注入语句,但它并没有使该服务在 razor 视图中可用。

如何将服务注入所有 Razor 视图?

您只需添加

@inject IResourceHelper _resourceHelper

在 Viewimports 中,然后你可以像

一样全局使用它
<h1 class="display-4">@(_resourceHelper.Actionname().title)</h1>

这对我有用,作为示例:

@page
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<h1 class="display-4">@(MyService.getname().Name)</h1>