我正在开发基于 ASP.NET Core 6 的 Web 应用程序。为了避免在我的控制器中编写大量冗余代码,我实现了一个BaseController
所有控制器都继承自的类。在那个类中,我重写了OnActionExecutionAsync
运行代码的方法,否则这些代码在每个控制器中都是多余的。在这段代码中,我需要访问两个参数,否则我必须通过它的参数传递给每个控制器操作,如下所示:
public async Task<ActionResult> ExampleAction([FromQuery(Name = "argument1")] Guid? argument1, [FromQuery(Name = "argument2")] Guid? argument2)
只要我在每个动作中保留这些参数,我就可以在OnActionExecutionAsync
方法中轻松访问它们。但是,我不想这样做,因为它需要我将参数添加到每个控制器操作,而我什至不需要它们。现在我遇到的问题是,当我从控制器操作中删除参数时,我无法再通过方法访问context.ActionArguments
它们OnActionExecutionAsync
。
在这种情况下,有什么办法我仍然可以访问参数吗?我已经在 SO 上找到了这个非常相似的问题,但建议使用的解决方案actionContext.ControllerContext.RouteData.Values["tenant"]
在我的情况下不起作用。ControllerContext
ASP.NET Core 6中根本没有,并且context.RouteData.Values
似乎不包含我正在寻找的论点。