RedirectToAction() (MVC5)的意外行为
本文关键字:意外 MVC5 RedirectToAction | 更新日期: 2023-09-27 18:14:38
我在尝试使用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");
}
我得到这个URL:
http://localhost:51547/myroot/Home/About
这不是我所期望的。如果我这样做:
return RedirectToRoute("Default", new { controller = "Home", action = "About" });
我得到这个URL:
http://localhost:51547/Home/About
这对我来说很有意义。
谁能解释为什么RedirectToAction
是添加myroot/
前缀的URL,而不是匹配Default
路由?
谢谢!
请将您的Route order更改为
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" }
);
这可能行得通…不是测试
return RedirectToAction("action", "controller", new { area = "" });