如何使用标签助手来创建从Area页面到根Pages文件夹的链接?

时间:2020-10-09 15:50:00

标签: asp.net-core razor razor-pages tag-helpers

我正在使用Razor页面处理.NET Core 3.0项目。结构是这样的:

MySite
  /Areas
    /Admin
      /Pages
        - Index.cshtml        <--- Insert link on this page...
  /Pages
    - Order.cshtml            <--- ...that navigates to this page

如上所示,我试图在Admin/Index页面上放置一个简单的链接,该链接导航到Order页面(并包括Order ID)。对于相同文件夹或区域中的页面,甚至是专门转到单独区域的页面,这都非常容易,但这给我带来了麻烦。

我意识到可以很容易地对其进行硬编码,但是我想与项目的其余部分保持一致,并使用Tag Helpers。

我尝试以下操作均无济于事:

<a asp-page="Order" asp-route-id="@order.Id">Edit Order</a>
<a asp-page="/Order" asp-route-id="@order.Id">Edit Order</a>
<a asp-area="/" asp-page="Order" asp-route-id="@order.Id">Edit Order</a>
<a asp-route="~/Pages/Order.cshtml" asp-route-id="@order.Id">Edit Order</a>

呈现的链接具有href属性,没有任何值。

(对于价值而言,asp-route-id部分似乎是正确的。我在同一区域中使用了asp-page只是为了进行测试,它按预期方式传递了ID。)

有人可以引导我朝正确的方向前进吗?我一直在阅读所有可以找到的文档,但是没有任何运气。

1 个答案:

答案 0 :(得分:0)

我愚蠢的错误。

事实证明,如果任何参数不正确,href将无法正确呈现。

在这种情况下,我正在传递asp-route-id,但是“订单”页面的路线为@page {orderNumber}

进行此更改后,链接已成功生成。

<a asp-page="Order" asp-route-orderNumber="@order.Id">Edit Order</a>
                                   ↑