【发布时间】:2017-02-08 17:36:53
【问题描述】:
我有一个操作结果,我想重定向到一个具有动态 ID 的操作。
return RedirectToAction("Engine", new {id = latestVersion.Id});
但是,返回的 URL 最终是:
domain.com/project/engine/xxx
但我需要的是:
domain.com/project/engine?id=xxx
这是我目前的地图路线:
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
);
有没有办法改变控制器级别的格式化方式?
【问题讨论】:
-
不在控制器级别。控制器无法控制 url。您需要提供您拥有的所有 RouteMap(控制 url)。
-
为什么?您使用 MVC 魔术来解析路由中的 id 参数,
RedirectToAction使用它们。 -
@devio,如果 id 中有额外的 /,我有很多 javascript 会哭泣
-
删除你的第一条路线或你的行动方法上的参数名称。
-
顺便说一句,您可以使用任一 URL 模式调用它
标签: c# asp.net-mvc asp.net-mvc-routing