[英]ASP.NET MVC routing
到目前為止,我已經能夠使用ASP.NET MVC附帶的默認路由。 不幸的是,現在我正在分支到更復雜的路線,我正在努力解決如何讓它發揮作用。
我想要的一個簡單示例是將路徑/ User / {UserID} / Items映射到User控制器的Items函數。 任何人都可以告訴我,我的路由在這里做錯了嗎?
routes.MapRoute("UserItems", "User/{UserID}/Items",
new {controller = "User", action = "Items"});
在我的aspx頁面上
Html.ActionLink("Items", "UserItems", new { UserID = 1 })
通過MVC預覽4代碼,我在你面前的Html.ActionLink()的重載就是這個:
public string ActionLink(string linkText, string actionName, object values);
注意第二個參數是actionName而不是routeName 。
因此,嘗試:
Html.ActionLink("Items", "Items", new { UserID = 1 })
或者,嘗試:
<a href="<%=Url.RouteUrl("UserItems", new { UserId = 1 })%>">Items</a>
你能發布更多信息嗎? 在鏈接中生成的aspx頁面是什么URL? 這可能是因為您的路線定義的順序。 我認為您需要在默認路由之前聲明您的路由。
Html.ActionLink("Items", "User", new { UserID = 1 })
首先從查看它生成的URL開始,然后使用Phil Haack的路由調試庫進行檢查。 它會清除很多東西。
如果您擁有一堆路由,則可能需要考慮命名路由並使用命名路由。 當您重新訪問代碼時,它將使您的意圖更加清晰,並且可以提高解析速度。
此外(這純粹是個人觀點)我喜歡在字符串的頁面開頭的某處生成我的鏈接,然后將這些字符串放在我的HTML中。 這是一個微小的開銷,但在我看來,使代碼更具可讀性。 此外,如果您有或重復鏈接,您只需要生成一次。
我更願意
<% string action = Url.RouteUrl("NamedRoute", new
{ controller="User",
action="Items",
UserID=1});%>
后來寫了
<a href="<%=action%>">link</a>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.