2010-11-23 52 views
0

我剛剛創建了一個SiteMap控制器,它爲我的站點生成一個站點地圖。我試圖輸出我在整個網站上列出的產品的網址。在我的例如產品列表視圖我有這樣的代碼:爲什麼我的路由URL不匹配不同的控制器?

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

其輸出這個網址:

/產品/信息/ 1330 /珊妮藍色小迷彩短褲

它映射這條線路:

routes.MapRoute(

     "ViewProduct", 

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

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

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

    ); 

在我的網站地圖控制器,但是我正在使用此代碼來生成的網址:

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

,它的輸出是:?

/產品/信息/ 1330產品名稱=珊妮藍色小迷彩短褲

我要去哪裏錯了,我如何才能Sitemaps網址關聯與在我的產品列表視圖中創建的網址?

Lloyd

回答

1

您的途徑無效。可選參數只能出現在最後。在你的情況下,你有cat路由參數,它是選項,它是在URL的中間。所以你需要爲這個參數提供一個值,如果你想選擇這條路線而不是默認路線:

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

好抓!謝謝,完全錯過了那個,昨晚看了它一個小時左右,另一個人看不到樹木的時刻。感謝你的時間,謝謝堆! – lloydphillips 2010-11-23 20:35:23

相關問題