【问题标题】:Unexpected behaviour of RedirectToAction() (MVC5)RedirectToAction() (MVC5) 的意外行为
【发布时间】:2015-12-24 20:27:24
【问题描述】:

我在尝试使用 RedirectToAction() 时遇到问题。

在我的RouteConfig.cs 我有这样的东西:

        routes.MapRoute(
            name: "Custom",
            url: "myroot/{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = "0" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = "0" }
        );

从我的控制器,如果我尝试这个:

    public ActionResult Contact()
    {
        return RedirectToAction("About", "Home");
    }

我得到这个网址:

http://localhost:51547/myroot/Home/About

这不是我所期望的。如果我试试这个:

return RedirectToRoute("Default", new { controller = "Home", action = "About" });

我得到这个网址:

http://localhost:51547/Home/About

这对我来说很有意义。

谁能解释为什么RedirectToAction 在URL 中添加myroot/ 前缀而不是匹配Default 路由?

谢谢!

【问题讨论】:

  • 看起来您已经在使用具有该前缀的方法
  • 您好斯蒂芬,感谢您的回复。实际上,我在默认的 MVC 应用程序中对此进行了测试。我的方法是这样的: public ActionResult Contact() { return RedirectToAction("About", "Home");当我编写此 URL (localhost:12345/Home/Contact) 时,它会转到“关于”视图,将 myroot/ 前缀写入 url,如上所述。
  • 你的方法是什么? (你还没有显示)

标签: c# asp.net-mvc-5 redirecttoaction


【解决方案1】:

请将您的路线顺序更改为

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = "0" }
    );routes.MapRoute(
        name: "Custom",
        url: "myroot/{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = "0" }
    );

【讨论】:

    【解决方案2】:

    这可能有效...未经测试

    return RedirectToAction("action", "controller", new { area = "" });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2016-07-16
      • 2016-05-10
      • 2020-07-23
      相关资源
      最近更新 更多