我有一個路線定義爲這樣:ActionLink的與routeValues創建舊斯庫爾風格的URL
<%: Html.ActionLink("Click here", "Schedule", "Customer", new { sn = "KingKong89", new { @class="topLink" })%>
產生的超級鏈接/ URL:
routes.MapRoute(
"CustomerWithScreenName", // Route name
"Customer/{sn}/{action}", // e.g. Customer/KingKong89/Schedule
new { controller = "Customer", action = "Signup", id = "" } // Parameter defaults
);
但是,當我使用的ActionLink這樣制定的鏈接出來是這樣的:
http://localhost:65071/Customer/Schedule?sn=KingKong89
它的工作原理,但我EXPE反恐執行局的ActionLink使用已知的路線和建設的正確鏈接具體做法是:
http://localhost:65071/Customer/KingKong89/Schedule
是我的期望錯了嗎?它是如何工作的參數化URL?
注意:我沒有在路由中指定{controller}。我似乎無法將這條路線與更正統的{控制器} {動作} {id}路線相混合 - 也許我應該停止嘗試變得聰明並採用慣例。
感謝您的幫助。盧克。
UPDATE
我有一個理論,如果沒有合適的途徑(包括{}控制器特殊的關鍵字),我將無法使ActionLink的產生正確的URL。
所以我現在把我的目光投向了爲什麼這個簡單的路線不工作:
routes.MapRoute(
"ControllerWithScreenName", // Route name
"{controller}/{sn}/{action}", // e.g. Customer/Dave/Schedule
new { controller = "Customer", action = "Signup", sn = "" } // Parameter defaults
);
作爲唯一的途徑,用默認的「根」一起,它不會起球。如果控制器名稱是專門添加的(如上面的第一個代碼段所示)。在盛大的一個小東西 -
更新2
由於時間有限,我對我的PARAM前方的動作風格URL放棄,並回到默認的控制器\行動\參數進步的方案,而不是感到沮喪和鬱悶。
更新3
我會以取消我所有的智能屁股路線和嘗試使用RouteLink並指定路線使用的類型。我認爲這是RouteLink評論的存在理由。
UPDATE 4
這也是白搭。這要求應用程序瞭解要採取的路線,這意味着我將失去將來僅改變路線的選項,並讓所有鏈路自動更新。
喜羅布,並感謝您幫幫我。我糾正了路徑(id> sn),第二個是這裏的錯字,第三個已經是如何設置的。它仍然在生成舊的網址。我要進一步調查。 – 2010-08-11 11:35:41
你確定嗎?在我發佈之前,我已經測試過這個版本,並且它在我的最後工作正常。 – 2010-08-11 11:45:32
我只是再次測試,以確保我得到: