1

我正在寻找导致OnActionExecuting()被覆盖的动作ActionFilterAttribute。想法是将其保存在会话中,以便用户可以在输入临时“更改密码”页面后重定向到他们想要的页面。

我目前的尝试是:

public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
{
    // ...
    ActionResult originatingActionResult = new RedirectToRouteResult(
        new RouteValueDictionary
        {
            { "controller", actionExecutingContext.ActionDescriptor.ControllerDescriptor.ControllerName },
            { "action", actionExecutingContext.ActionDescriptor.ActionName }
        });
    // ...

但这对于正在做的事情来说似乎相当复杂——有没有更简单的方法?

4

1 回答 1

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);
于 2013-04-23T11:39:51.633 回答