我希望在被覆盖的OnActionExecuting()
中获得导致ActionFilterAttribute
的操作。我们的想法是将其保存在会话中,以便在输入临时“更改密码”页面后将用户重定向到其预期页面。
我目前的尝试是:
public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
{
// ...
ActionResult originatingActionResult = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", actionExecutingContext.ActionDescriptor.ControllerDescriptor.ControllerName },
{ "action", actionExecutingContext.ActionDescriptor.ActionName }
});
// ...
但这对于正在做的事情来说似乎相当复杂 - 有更简单的方法吗?
答案 0 :(得分:0)
原来它可以简化为:
ActionResult originatingActionResult = new RedirectToRouteResult(
new RouteValueDictionary(filterContext.RouteData.Values));
...然而
该项目使用T4MVC并且RedirectToAction
无法使用,因为它在控制器上被覆盖,并且GetT4MVCResult()
上应该有ActionResult
。
所以我最终这样做了:
RouteValueDictionary originatingRouteValues = new RouteValueDictionary(
actionExecutingContext.RouteData.Values);
// ... followed by ...
return this.RedirectToRoute(routeValues);