【问题标题】:How to get ActionResult from ActionExecutingContext?如何从 ActionExecutingContext 中获取 ActionResult?
【发布时间】:2013-04-23 09:43:53
【问题描述】:

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

我目前的尝试是:

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

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

【问题讨论】:

    标签: .net redirect asp.net-mvc-4 action-filter actionresult


    【解决方案1】:

    原来它可以简化为:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多