В ASP. Net Core WebApp я хочу использовать ActionFilter и отправлять информацию из ActionFilter на контроллер, к которому он применяется.
MVC
Для MVC Я могу сделать это
ActionFilter
public class TenantActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
//Using some sneaky logic to determine current tenant from domain, not important for this example
int tenantId = 1;
Controller controller = (Controller)context.Controller;
controller.ViewData["TenantId"] = tenantId;
}
public void OnActionExecuted(ActionExecutedContext context) { }
}
Контроллер
public class TestController : Controller
{
[ServiceFilter(typeof(TenantActionFilter))]
public IActionResult Index()
{
int tenantId = ViewData["TenantId"];
return View(tenantId);
}
}
Это работает, и я могу передать данные обратно в контроллер через ViewData - отлично.
WebApi
Я хочу сделать то же самое для контроллеров WebApi.
Можно применить сам actionFilter , работает et c - но я не могу записать в ViewData, потому что WebAPI наследуется от ControllerBase, а не от Controller (как MVC).
Вопрос
Как я могу pu sh данные из моего ActionFilter обратно в вызывающую ControllerBase, аналогично MVC?
Notes
- ASP. Net Core 2.2 используется, но я был бы удивлен, если бы решение не может быть использовано во всех. Net Core.