![](/img/trans.png)
[英]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.