簡體   English   中英

ASP.NET MVC路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM