【问题标题】:Is this a bug with the asp net core ActionLink Html helper?这是 asp net core ActionLink Html 助手的错误吗?
【发布时间】:2019-09-04 18:18:06
【问题描述】:

我正在编写一个新的 Razor Pages 应用程序(这是我第一次使用 Razor 页面而不是 MVC),我到了需要创建链接的地步,而我终其一生都无法弄清楚为什么即使我尝试了我能想到的 ActionLink 方法的参数的每一个变体,它也不起作用。然后,我改用 Anchor Tag Helper 方法和精确的 smae 参数,它工作得很好。 当我搭建自己的观点时,我已经很困惑了,因为代码生成同时使用了 Tag Helpers 和 Html Helpers,正如我的大脑告诉我的那样,你应该真正选择其中一个,并尽可能保持一致。

cshtml文件中的代码如下:

<a asp-page="./DeleteIngredient" asp-route-MenuItemId="@item.MenuItemId" asp-route-IngredientId="@item.IngredientId">Delete</a>

@Html.ActionLink("Delete", "DeleteIngredient", new { MenuItemId = @item.MenuItemId, IngredientId = @item.IngredientId })
@Html.ActionLink("Delete", "./DeleteIngredient", new { MenuItemId = @item.MenuItemId, IngredientId = @item.IngredientId })

标签助手正确生成以下网址:

https://localhost:44308/MenuItems/DeleteIngredient?MenuItemId=c469f993-9cac-4adc-bf63-2aba9be249c9&IngredientId=2f2863b1-27f4-4c62-93d6-84f27acb98fd

Html Helpers 生成以下内容:

https://localhost:44308/MenuItems/Details/c469f993-9cac-4adc-bf63-2aba9be249c9?MenuItemId=c469f993-9cac-4adc-bf63-2aba9be249c9&IngredientId=2f2863b1-27f4-4c62-93d6-84f27acb98fd&action=DeleteIngredient

注意:链接位于带有 URL 的页面上: https://localhost:44308/MenuItems/Details/c469f993-9cac-4adc-bf63-2aba9be249c9

总之,我做错了什么吗?或者这似乎是asp net core Html.ActionLink方法中的一个错误?

【问题讨论】:

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


    【解决方案1】:

    Html.ActionLink 用于 MVC 模式,它需要 Action 和 Controller 名称。由于您使用的是剃须刀页面,因此它将无法正常工作,因为您没有控制器和操作,但您有页面!所以,你的第一种方法是正确的。

    您也可以使用Url.Page 生成链接,如下所示:

    <a href="@(Url.Page("./DeleteIngredient", null, new { MenuItemId = item.MenuItemId, IngredientId = item.IngredientId })">Delete</a>
    

    【讨论】:

    • 谢谢 Laz,我发现这个链接可以验证你所说的:forums.asp.net/t/2140274.aspx?Razor+Page+Navigation 我也验证了脚手架代码都没有使用 ActionLink 帮助器。我来自 MVC 背景并且过去使用过它,真正让我失望的是,脚手架代码在某些事情上使用 HTML 助手,而在其他事情上使用标签助手。例如,脚手架的创建页面使用“
    • 对于任何未来好奇的人,我在这里发布了另一个问题:stackoverflow.com/questions/57825275/…
    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2021-07-21
    • 2017-09-15
    • 2018-12-20
    • 2020-04-03
    • 2011-01-07
    • 2019-01-03
    相关资源
    最近更新 更多