我目前在RouteConfig.cs中有以下内容:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Identity",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Profile", action = "Identity" }
);
我正在尝试在Action方法中使用以下内容:
return RedirectToRoute("Identity", new { @id = id });
但它似乎没有去那里,当我与Fiddler核实时,我看到请求回到我当前所在的同一页面,它似乎正在达到默认路线。无论如何强制它获得一个身份,即使他们的网址是相同的,我想用它来迫使用户在需要时使用另一个控制器。
答案 0 :(得分:2)
MVC将在找到匹配后立即停止寻找路线。在您的情况下,它将按以下顺序查看:1。)默认2.)标识。
如果要创建具有相同模式的特定路径,可以使用以下代码实现:
routes.MapRoute(
name: "Identity",
url: "Profile/{action}/{id}",
defaults: new { controller = "Profile", action = "Identity" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 1 :(得分:1)
您无需将用户“强制”为其他控制器。使用RedirectToAction方法是一种很好的做法,因此您可以提供要将用户带到的控制器和操作。
@ thiag0提供的解决方案无效。
使用以下
return RedirectToAction("Identity", "Profile", new { id = 5 });
并在配置文件控制器中,确保您可以接受参数
public ActionResult Identity(int id)
{
return View();
}
和在RouteConfig.cs中
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Identity",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Profile", action = "Identity"}
);