【问题标题】:Redirect to an action with parameter and model binder doesn't work重定向到带有参数和模型绑定器的操作不起作用
【发布时间】:2013-07-16 15:33:04
【问题描述】:

这是我的代码。当我将响应重定向到某个操作时,模型绑定器不起作用。

谁能帮帮我?

public void OnException(ExceptionContext filterContext)
{
  var action = filterContext.RouteData.Values["action"];
  var controller = filterContext.RouteData.Values["controller"];
  var values = filterContext.RouteData.Values;
  var exceptionMessage = filterContext.Exception.Message;
  var exception = filterContext.Exception;

  filterContext.ExceptionHandled = true;
  ExceptionInfo ExceptionInfo = new ExceptionInfo();
  ExceptionInfo.ActionName = action.ToString();
  ExceptionInfo.ControllerName = controller.ToString();
  ExceptionInfo.ExceptionMessage = exceptionMessage;

  filterContext.HttpContext.Response.RedirectToRoute(new
  {
    action = "Error",
    controller = "Home",
    ExceptionInfo = ExceptionInfo
  });
}

public ActionResult Error(ExceptionInfo ExceptionInfo)
{
  return View(ExceptionInfo);
}

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 model-binding


    【解决方案1】:

    将您的代码替换为以下内容:

    public void OnException(ExceptionContext filterContext)
    {
      var action = filterContext.RouteData.Values["action"];
      var controller = filterContext.RouteData.Values["controller"];
      var values = filterContext.RouteData.Values;
      var exceptionMessage = filterContext.Exception.Message;
      var exception = filterContext.Exception;
    
      filterContext.ExceptionHandled = true;
      ExceptionInfo ExceptionInfo = new ExceptionInfo();
      ExceptionInfo.ActionName = action.ToString();
      ExceptionInfo.ControllerName = controller.ToString();
      ExceptionInfo.ExceptionMessage = exceptionMessage;
    
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { 
        action = "Error", 
        controller = "Home", 
        exceptionInfo = ExceptionInfo
      }));
    }
    
    public ActionResult Error(ExceptionInfo exceptionInfo)
    {
      return View(exceptionInfo);
    }
    

    【讨论】:

    • 到底发生了什么?
    • 我得到的结果相同,null :( 但如果我用参数 woks 参数重定向它
    • 带参数重定向是什么意思?
    【解决方案2】:

    我建议改用Controller.RedirectToAction。它有很多重载,应该使您能够使用任何相关的参数重新路由到所需的控制器/动作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2021-07-27
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多