首页 > 解决方案 > 在所有 ASP.Net Core Razor 视图中注入服务

问题描述

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

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

@inject IResourceHelper _resourceHelper

然后我可以像这样使用它......:

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

工作得很好。但是,由于我在所有视图中都需要它(几乎),我想只注入一次 - 并且在任何地方都可以使用它。

我查看了 _ViewImports.cshtml,这似乎很适合这样的事情 - 我已经添加了一些 taghelper,如下所示:

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

我尝试在那里添加一个注入语句,但它不会使该服务在剃刀视图中可用。

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

标签: asp.net-corerazordependency-injection

解决方案


你只需要添加

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

推荐阅读