2010-11-23 10 views
0

私は自分のサイトのサイトマップを生成するSiteMapコントローラを作成しました。私はサイト全体にリストした製品のURLを出力しようとしています。例えば、私の製品リストビューでは、私はこのコードを持っている:ルーティングURLが異なるコントローラで一致しないのはなぜですか?

/製品/詳細/ 1330/sandee - 青 - 小迷彩ショートパンツ

マッピングします。このURLを出力

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) }) 

私のサイトマップコントローラで

routes.MapRoute(

     "ViewProduct", 

     "products/{cat}/{id}/{productName}", 

     new { controller = "products", action = "Details", cat = "", id = "", productName = "" }, 

     new string[] { "EliteFightKit.Web.Controllers" } 

    ); 

しかし、私はURLを生成するには、このコードを使用しています:このルートへ

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) }) 

、それがこの出力だ:?

/製品/詳細/ 1330 PRODUCTNAME = sandee - 青 - 小迷彩ショートパンツ

私が間違っつもり

を、どのように私は相関するサイトマップのURLを取得します私の製品リストビューで作成されたURLを使用しますか?

ロイド

答えて

1

あなたのルートは有効ではありません。オプションのパラメータは、最後にのみ表示できます。あなたの場合は、catというルートパラメータがあり、これはオプションで、URLの真ん中にあります。したがって、このルートをデフォルトのルートの代わりに選択する場合は、このパラメータの値を指定する必要があります。

Url.Action("Details", "Products", 
    new { id = "123", productName = "foo", cat = "bar" }) 
+0

Good catch!ありがとう、完全に1つを逃した、昨夜約1時間それを見ていた、別の木の木の瞬間の木を見ることができません。感謝のヒープ、あなたの時間を感謝します! – lloydphillips

関連する問題