好的,我一直在查看MVC 3路由问题/答案的代表性样本,我回答了80%的问题。一件好事,但现在最困难的部分仍未解决。
在我的世界里,我有一个URL localhost / Location / Guid
很好,基于我在默认路线之前输入的路线:
routes.MapRoute(
"Location",
"Location/{id}",
new { controller = "Location", action = "Details", id = System.Guid.Empty }
);
我可以通过Guid传递我想要显示的位置,但是这个位于右下方。我真的很想看到地址栏中显示的URL,并在页面中链接为:localhost / Location / Paris
显然,我可以将参数更改为字符串并传入“巴黎”,但我不明白如何让数据库了解我想要巴黎,法国而不是巴黎,德克萨斯而不使用Guid
我真的需要一些帮助,不仅要解决我的问题,还要更好地理解路由。我认为我已经掌握了足够的需求,但显然,我没有。
提前致谢!
答案 0 :(得分:2)
您将不得不在URL中添加一些内容,以消除巴黎,法国和德国巴黎之间的歧义。
/Location/{locationSlug}
。如果您有多个名为“Paris”的位置,则对它们进行细分,并在末尾附加一个自动递增的#(例如/ Location / paris,/ Location / paris-1,/ Location / paris-2)。或者您可以将区域/城市/国家/地区信息添加到slug中以消除歧义,而不是#。 Location/{id}/{locationSlug}
(例如/ Location / 1245 / paris)。