【发布时间】:2020-05-21 14:50:53
【问题描述】:
在 ASP.Net Core WebApp 中,我想使用 ActionFilter 并将信息从 ActionFilter 发送到应用它的控制器。
MVC
对于 MVC,我可以做到这一点
动作过滤器
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 本身可以应用、运行等 - 但我无法写入 ViewData,因为 WebAPI 继承自 ControllerBase - 而不是来自 Controller(如 MVC)。
问题
如何将数据从我的 ActionFilter 推送回调用 ControllerBase,类似于 MVC?
注意事项
- 正在使用 ASP.Net Core 2.2,但如果解决方案不能在所有 .Net Core 中使用,我会感到惊讶。
【问题讨论】:
标签: asp.net-core asp.net-core-mvc asp.net-core-webapi