【发布时间】:2013-03-30 09:15:25
【问题描述】:
我有一个 HttpModule,需要知道正在执行的操作。而且我需要从方法中获取MethodInfo,动作名不够,需要从类型中获取真正的方法。
我知道如何获取控制器和动作:
string controllerName = ...RouteData.Values["controller"].ToString();
string actionName = ...RouteData.Values["action"].ToString();
我想做: controllerType.GetMethod(actionName)
这当然会导致 AmbiguousMatchException...
正在执行哪个签名?有可能知道吗?
【问题讨论】:
-
您使用的是什么版本的 .NET?在 4.0 及更高版本中,路由内置于 ASP.NET(不仅仅是 MVC)中,因此在您的模块中您可以使用 HttpContext.Current.Request.RequestContext.RouteData,并从那里获取操作值。要确定正在执行的方法,您将使用其余的路由数据,即任何不是控制器、操作或区域的数据,因为这些将与您的操作方法上的参数匹配。
-
我正在使用 HttpContext.Current.Request.RequestContext.RouteData。但我无法为动作获得正确的过载?你知道怎么做吗?
-
查看我的建议答案。
标签: asp.net-mvc