我的应用程序使用多个路由。这是两个相关的:
routes.MapRoute(name: "MyRoute",
url: "Flow",
defaults: new { controller = "MyCtrl1", action = "Index" });
routes.MapRoute(name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "MyCtrl2", action = "Index", id = UrlParameter.Optional });
现在我有Action
返回:
return RedirectToAction("Index", "Flow", new {Id = <currId>});
现在框架可能会进行优化("Default"
路由的默认action
名为"Index"
),重定向网址我得:
https://<host>/Flow?Id=<currId>
预期网址为:
https://<host>/Flow/Index?Id=<currId>
我的问题是我希望"Default"
路由处理请求而"MyRoute"
处理它。
看起来框架进行了优化,忘记了在优化后是否改变了预期路线。
我的问题:
Flow/Index
?答案 0 :(得分:0)
使用返回RedirectToRoute(),而不是使用返回RedirectToAction()。您可以在返回RedirectToRoute(“MyRoute”)中设置自定义路线名称。
参考此链接
http://www.codeproject.com/Articles/641783/Customizing-Routes-in-ASP-NET-MVC
答案 1 :(得分:0)
受保护的内部RedirectToRouteResult RedirectToAction( string actionName, 字符串controllerName )
return RedirectToAction("Index", "MyCtrl2", new {Id = <currId>});
return RedirectToAction("Index", "MyCtrl", new {id= <currId>});
答案 2 :(得分:0)
从默认路线中取出默认操作。这将强制始终在创建的URL中指定它:
routes.MapRoute(name: "MyRoute",
url: "Flow",
defaults: new { controller = "MyCtrl1", action = "Index" });
routes.MapRoute(name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "MyCtrl2", id = UrlParameter.Optional });