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

时间:2016-12-08 02:48:21

标签: asp.net asp.net-mvc dependency-injection

dotnet core mvc 中,我可以使用 @inject 指令将服务注入视图,但如何在 dotnet mvc 5中执行此操作。似乎 mvc 5 中没有 @inject 指令。

1 个答案:

答案 0 :(得分:5)

ASP.NET MVC 5没有@inject

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

使用@model的解决方法

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

MyController.cs:

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

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

Razor.cshtml:

@model ViewModel

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

这还意味着您可以在模型中放置IServiceProvider并直接在视图中解析。但是,就关注点分离而言,这不是理想的选择。