Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3路由混乱_Asp.net Mvc 3_Routing_Guid - Fatal编程技术网

Asp.net mvc 3 MVC3路由混乱

Asp.net mvc 3 MVC3路由混乱,asp.net-mvc-3,routing,guid,Asp.net Mvc 3,Routing,Guid,好的,我已经查看了MVC 3路由问题/答案的代表性示例,我回答了80%的问题。这是件好事,但现在最困难的部分仍未解决 在我的世界中,我有一个URL localhost/Location/Guid 根据我在默认路线之前输入的路线,效果非常好: routes.MapRoute( "Location", "Location/{id}", new { controller = "Location", action = "Details", id = System.Guid.Emp

好的,我已经查看了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

显然,我可以将参数更改为字符串并在“Paris”中传递,但我不知道如何让数据库理解我想要的是法国巴黎,而不是德州巴黎,而不使用Guid

在这一点上,我真的需要一些帮助,不仅是为了解决我眼前的问题,也是为了更好地理解一般的路由。我以为我有足够的能力应付我的需要,但很明显,我没有


提前谢谢

您必须在URL中添加一些内容,以消除法国巴黎和德克萨斯州巴黎之间的歧义

  • 您可以将路由模式设置为`/Location/{country}/{region}/{city}',也可以对应用程序中所有可能的位置进行slagify
  • 使用这些位置段塞:
    /location/{locationSlug}
    。如果您有多个名为“Paris”的位置,您可以对它们进行slagify并在末尾附加一个自动递增的#(例如,/Location/Paris、/Location/Paris-1、/Location/Paris-2)。或者您可以将地区/城市/国家信息添加到slug以消除歧义,而不是#
  • DoIt stack overflow question样式,其中有一个ID,然后是位置slug。如果您能够将GUID转换或映射为整数,它看起来更漂亮、更简洁,因此您的模式如下:
    Location/{id}/{locationSlug}
    (例如,/Location/1245/paris)
    我从未想过在id之后添加一个无意义的描述符,很好。(是的,即使我使用这个网站)很多流行的网站都会在结尾添加内容。例如,维基百科和Yelp。