如何正确生成不随路由参数改变的剃刀页面链接

时间:2021-03-16 05:28:37

标签: asp.net-core razor-pages

我是 razor 页面的新手,显然肯定遗漏了一些东西,但就我的生活而言,我无法弄清楚如何生成一个指向 razor 页面的链接,该链接不会神奇地改变并包含可选的路由参数 - 如果我在那个页面上。

我认为这个问题源于相关链接位于始终在页面上的导航菜单中 - 即使我在相关页面上也是如此。

具体来说,假设我的页面是 /Customer/Invoices。我在菜单中有一个链接,我尝试通过 asp-page 标签助手、Url.Page 等生成该链接。当我在应用程序中的任何位置,甚至在相关页面上时,它都能完美运行,< em>只要我没有任何路由参数。如果我使用路由参数访问页面,那么该菜单链接也神奇地拥有它。

总结一下,如果我浏览到.../Customer/Invoices - 即使我在页面上,链接也很好。 如果我浏览到 .../Customer/Invoices/123 - 菜单中的链接突然最后有 123 路由参数。

我只想要没有可选路由参数的静态页面 url - 无论我是否在带有路由参数的页面上。我必须错过一些东西......

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,.net core tag helper会根据设计生成带有路由参数的url。如果你想去掉路由参数,这里有两个解决方案。

1.在<a>标签中设置空路由参数。这是一个演示:

页面(测试1/测试):

@page "{id?}"
<a asp-page="Test" asp-route-id="1">link1</a>
<a asp-page="Test" asp-route-id="">link2</a>

结果: enter image description here

2.使用 href 替换 <a> 标签:

页面(测试1/测试):

@page "{id?}"
<a asp-page="Test" asp-route-id="1">link1</a>
<a href="/Test1/Test">link2</a>

结果: enter image description here