0

カスタムルートを定義しました:

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" }
        );

私は2つのほぼ同一のアクションリンクを持っており、一方は機能していますが、もう一方は機能していません

@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

これは私を困惑させました。何かアドバイスをいただければ幸いです。

4

1 に答える 1

0

よく私はそれを理解しました。

ビューのモデルでは、collectionUrlFriendlyNameが2つの異なるレベルで定義されています。最初にモデル自体で、次にモデルがリストを持っているクラスでもう一度。

URLが形成されていたリストレベルでcollectionUrlFriendlyNameの値を定義していませんでした。しかし、URLを作成するときに、後で上位レベルで値を見つけ、それを使用して醜いURLを形成すると思います(したがって、下位レベルに入力されていないという問題を隠します)

それが理にかなっているなら。

于 2012-11-06T19:10:48.290 に答える