在 dotnet mvc 5 中,如何将服务注入视图?

Hon*_*hen 7 asp.net asp.net-mvc dependency-injection

DOTNET核心MVC,我可以通过使用注入服务为一体的视图@注入指令,但如何做到这一点的dotnet MVC 5。它似乎没有@Inject指令在MVC 5

Fab*_*Fab 5

ASP.NET MVC 5 没有 @inject

此关键字仅存在于 ASP.NET Core 中。

解决方法使用 @model

但是,您仍然可以在控制器中注入依赖项,并从控制器将其传递给模型。@model并且@Model可以在剃刀页面/视图中自由使用。

我的控制器.cs:

public class MyController : Controller
{
    public MyController(IMyDependency dependency)
    {
        _dependency = dependency;
    }

    public ActionResult Index()
    {
        View(new ViewModel
        {
            Dependency = _dependency
        });
    }
}

Run Code Online (Sandbox Code Playgroud)

Razor.cshtml:

@model ViewModel

@if (Model.Dependency.CanView)
{
    <!-- Put the code here -->
}

Run Code Online (Sandbox Code Playgroud)

这也意味着您可以将 aIServiceProvider放入模型并直接在视图中解析。然而,就关注点分离而言,这不是理想的。