2012-11-01 140 views
0

我定义的自定义路线:MVC路由错误

routes.MapRoute(
      "FabricDetails", // Route name 
      "fabric/details/{designerUrlFriendlyName}/{collectionUrlFriendlyName}/{fabricUrlFriendlyName}", // URL with parameters 
      new { controller = "Fabric", action = "Details", designerUrlFriendlyName = UrlParameter.Optional, collectionUrlFriendlyName = UrlParameter.Optional, fabricUrlFriendlyName = UrlParameter.Optional }, // Parameter defaults 
      new[] { "StashFabrics.Web.Controllers" } 
     ); 

我有两个几乎相同的actionlinks和一个工作,而另一种是不

@Html.ActionLink(fabric.FabricName, "Details", "Fabric", new RouteValueDictionary(new { designerUrlFriendlyName = fabric.DesignerUrlFriendlyName, collectionUrlFriendlyName = fabric.CollectionUrlFriendlyName, fabricUrlFriendlyName = fabric.FabricUrlFriendlyName }), null) 
@Html.ActionLink(fabric.FabricName, "Details", "Fabric", new RouteValueDictionary(new { designerUrlFriendlyName = fabric.DesignerUrlFriendlyName, collectionUrlFriendlyName = "grand_hotel", fabricUrlFriendlyName = fabric.FabricUrlFriendlyName }), null) 

无论出于何种原因,只要我更换为collectionUrlFriendlyName链接没有得到正确建

http://localhost:55089/Fabric/Details?designerUrlFriendlyName=jenean_morrison&collectionUrlFriendlyName=grand_hotel&fabricUrlFriendlyName=ballroom_in_azure 
http://localhost:55089/fabric/details/jenean_morrison/grand_hotel/ballroom_in_azure 

这我难倒了硬编码值。任何意见,将不胜感激。

回答

0

我想通了。

在视图的模型中,我有两个不同级别定义的collectionUrlFriendlyName;首先在模型本身上,然后再次在模型有一个列表的类上。

我没有在列表级别定义collectionUrlFriendlyName的值,其中URL正在形成。但我想构造URL时,它后来发现在上层的价值,并用它来形成难看的URL(这样就隐藏了问题,这是不填充上下级)

如果有意义。