2011-10-21 69 views
0

我想利用默認路由,所以我得到一個沒有查詢字符串參數的URL。我不能得到@ActionLink呈現正確的網址,以使用我的MVC3默認路由

所以,我現在有這個網址:

http://www.mysite.Items/Edit?ItemID=19719 

而我試圖讓這樣的URL:

http://www.mysite.Items/Edit/19719 

路由的作品,但我不能讓用於生成第二個url的@ Html.ActionLink方法。

這裏是我的剃刀代碼:

@Html.ActionLink("Edit", "Edit", new {item.ItemID}, new { id = "edit-" + item.ItemID }) 

第一個參數是我的鏈接的文本。第二個參數是Action。第三個是ID值,最後是最後一個參數是我用於某些javascript的HTML屬性。

本來我有我的第三個參數作爲

new {itemID = itemID} 

這是當我的編輯操作預期命名的itemid作爲參數的整數值。我將它改爲'id',這樣路由就可以工作。

理想情況下,我想要一條路徑將19719值傳遞給名爲itemID的參數,但這超出了這個問題的範圍。

在此先感謝。

求助 謝謝Darin Dimitrov這個解決方案。

我最終以最初的方式留下了我的html代碼和動作參數。所有真正需要的是我的路線更新。我應該注意到,我必須在默認之前添加我的新路線圖。無論如何,這是我的路線註冊,現在這一切工作。

public static void RegisterRoutes(RouteCollection routes) { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute("", "Items/{action}/{itemID}", new { controller = "Items", action = "Details", itemID = @"\d+" }); 
     routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });   
    } 

回答

4

默認路由使用id的路線標記名稱,所以你想:

@Html.ActionLink(
    "Edit", 
    "Edit", 
    new { id = item.ItemID }, 
    new { id = "edit-" + item.ItemID } 
) 

通知new { id = item.ItemID },而不是new {itemID = itemID}而不是new {item.ItemID}

+0

哇,達林季米特洛夫回答你:D 幸運夥計 – salahy

+0

他很少錯過任何問題''.net'標記';'' – Rafay

+0

是否可以註冊一個允許itemID作爲參數的路由?例如:routes.MapRoute(「Default」,「{controller}/{action}/{id}」,new {controller =「Home」,action =「Index」,itemID = UrlParameter.Optional}); –

相關問題