我有一个动作结果,我想重定向到动态ID的动作。
return RedirectToAction("Engine", new {id = latestVersion.Id});
但是,返回的URL最终为:
domain.com/project/engine/xxx
然而,我需要的是:
domain.com/project/engine?id=xxx
以下是我目前的maproutes:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"PrevSession", // Route name
"{controller}/{action}/{id}/{id2}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional } // Parameter defaults
);
有没有办法改变在控制器级别格式化的方式?
答案 0 :(得分:1)
选项1。
您可以将id
路线参数更改为其他名称,例如
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{myId}", // URL with parameters
new { controller = "Home", action = "Index", myId = UrlParameter.Optional } // Parameter defaults
);
并在控制器(使用它们)中进行相应更改,或
选项2。
您可以添加不带id
参数的虚拟路径定义,例如
routes.MapRoute(
"RouteWithoutId", // Route name
"{controller}/{action}"
);
并使用RedirectToRoute
方法,例如,
return RedirectToRoute("RouteWithoutId", new { action = "Engine", id = latestVersion.Id});
希望这会有所帮助。
答案 1 :(得分:0)
简单回答
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);