簡體   English   中英

如何讓 routelink 返回正確的 URL?

[英]How to make routelink return the correct URL?

這是復制問題的程序。

  1. 啟動新的 mvc 4 項目。
  2. 將以下行添加到 RegisterRoutes() 方法中的“默認”路由之前

    routes.MapRoute( name: "Test", url: "Test/{action}", defaults: new { controller = "Test", action = "Index" } );
  3. 將以下內容添加到 Index.cshtml 和 About.cshtml

     @Html.RouteLink("link to TestController", "Test")

如您所見,生成的 html 代碼對於 2 個頁面是不同的。 我希望 URL 是“/Test”,它為 Index.cshtml 正確呈現,但它成為 About.cshtml 的“/Test/About”。

我的問題是是否有任何記錄的方法來生成相同的正確 URL。 上面的例子只是為了演示目的而創建的。 我想使用路由表信息來生成菜單。

似乎引擎正在從當前頁面(“索引”、“關於”)設置action路由值。 因此,解決此問題的一種方法是“取消設置”該路由值:

@Html.RouteLink("link to Test Controller", "Test", new { action = String.Empty })

注冊您的路線

 routes.MapRoute(
                name: "TestUrl",
                url: "Test",
                defaults: new { controller = "TestController", action = "TestAction" }
            );

將以下內容添加到 TestAction.cshtml

 @Html.RouteLink("Test", "TestUrl")

現在您的 URL 是 /Test,希望這對您有所幫助。

最快的方法是指定一個空白操作。

@Html.RouteLink("link to TestController", "", "Test")

這將產生/Test

對於那些來到這里尋找.netcore razor page RouteLink語法的人,不要使用 RouteLink 的“頁面”保留成員。 正如某些人所建議的那樣,它不適用於 routeValues 對象。 相反,請使用以下格式:

<a asp-page="RazorPage">RazorPage</a>

這處理尾隨和尾隨正斜杠的缺失。 RazorPage 是第一個“.”后沒有任何字符的頁面名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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