[英]Unable to make ActionLink or RouteLink generate the correct URL
[英]How to make routelink return the correct URL?
這是復制問題的程序。
將以下行添加到 RegisterRoutes() 方法中的“默認”路由之前
routes.MapRoute( name: "Test", url: "Test/{action}", defaults: new { controller = "Test", action = "Index" } );
將以下內容添加到 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.