在 dotnet core mvc 中,我可以使用 @inject 指令将服务注入视图,但如何在 dotnet mvc 5中执行此操作。似乎 mvc 5 中没有 @inject 指令。
答案 0 :(得分: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
并直接在视图中解析。但是,就关注点分离而言,这不是理想的选择。