我很困惑为什么我的RedirectToRoute()方法不起作用。我有像这样的RouteConfig.cs文件
routes.MapRoute(
"pattern1",
"{action}",
new { controller = "Home", action = "About" }
);
routes.MapRoute(
"pattern2",
"{controller}/{action}/{id}",
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
在此配置中,我的默认控制器主页和操作关于正在调用,现在在操作方法中,我正在使用以下值调用RedirectToRoute()
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return RedirectToRoute("pattern2");
}
为什么RedirectToRoute()没有调用管理员/索引操作
答案 0 :(得分:4)
试试这个:
return RedirectToRoute(new
{
controller = "Admin",
action = "Index",
id = null
});
您也可以使用RedirectToAction()方法。看起来更直观。
答案 1 :(得分:2)
这是因为您定义的路线。 RedirectToRoute()重定向到您定义的路由。您为" pattern2"定义的网址是" {controller} / {action} / {id}"。如果要使用仅接受routeName的重载,则需要在RouteConfig中显式定义url。例如:
routes.MapRoute(
"pattern2",
"Admin/Index",
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
如果您不想显式定义url,那么您需要使用RedirectToRoute()的不同重载来接受routeValues对象。