我正在努力实现将我的应用程序路由更改为如下所示的目标:
hxxp://host/MyController/Widgets/3/AddWhatsit
此路线的视图将帮助用户将 Whatsit 添加到 Widget 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):
Widget/3/Edit
我想我知道我没有把我的(可选)id 参数放在路线的末尾,这把事情搞砸了。
我应该把它吸起来,然后在路线的尽头留下 id 吗?