从ViewResult获取注入的服务

时间:2019-06-25 14:54:05

标签: asp.net-mvc asp.net-core

我正在执行ActionFilterAttribute的OnResultExecuting

public override void OnResultExecuting(ResultExecutingContext context)
{
    //here
    base.OnResultExecuting(context);
}

这时context.Result包含一个ViewResult。该视图将(或已经)注入了服务。

@model IMyModel
@inject IMyService MyService

我想在MyService上调用方法。

public override void OnResultExecuting(ResultExecutingContext context)
{
    var myService = //...
    myService.DoStuff();
    base.OnResultExecuting(context);
}

如何获取将要注入的对象?或者,我可以提供将要注入的对象吗?

1 个答案:

答案 0 :(得分:2)

我认为您可以通过HttpContext来做到这一点:

using Microsoft.Extensions.DependencyInjection;
...

var myService = context.HttpContext.RequestServices.GetService<IMyService>();