Получите инъекционные услуги от ViewResult - PullRequest
1 голос
/ 25 июня 2019

Я в OnResultExecuting ActionFilterAttribute

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 Ответ

2 голосов
/ 25 июня 2019

Я думаю, что вы можете сделать это через HttpContext:

using Microsoft.Extensions.DependencyInjection;
...

var myService = context.HttpContext.RequestServices.GetService<IMyService>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...