【发布时间】:2013-03-21 20:25:37
【问题描述】:
我正在努力实现 this 的目标,即将我的应用程序路由更改为如下所示:
hxxp://host/MyController/Widgets/3/AddWhatsit
此路线的视图将帮助用户将 Whatsit 添加到小部件 3。
同样,我希望创建新 Widget 的路线是:
hxxp://host/MyController/Widgets/Create
我已经创建了单独的路线来尝试和促进这一点。它们是:
routes.MapRoute("DefaultAction",
"{controller}/{action}",
new {controller = "Home", action = "Index"});
routes.MapRoute("Default",
"{controller}/{id}/{action}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional});
我遇到的问题是,当我浏览到小部件的索引页面(/MyController/Widgets,匹配“DefaultAction”路由)时,任何会引入不属于该路由的新 url 参数的 ActionLinks 都会被打开成一个查询字符串值。因此,例如,Widget 3 的编辑链接将呈现为:
Widget/Edit?id=3
instead of (what I would prefer):
小部件/3/编辑
我想我知道我没有把我的(可选)id 参数放在路由的末尾,这把事情搞砸了。
我应该把它吸干,然后把 id 留在路线的尽头吗?
【问题讨论】:
标签: asp.net-mvc razor asp.net-mvc-4 asp.net-mvc-routing