You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor Page中asp-page-handler不触发处理器且报400错误问题

解决Razor Page购物车删除功能400错误及方法未触发问题

我最近在Razor Page中实现购物车商品删除功能时踩了个坑,折腾了好一会儿才解决,在这里把过程分享给大家。

问题还原

我原本的思路是用带asp-page-handler的表单来触发删除操作,先写了Cart.cshtml里的表单代码:

<td class="text-center">
    <form asp-page-handler="Remove" method="post">
        <input type="hidden" name="id" value="@line.Product.Id" />
        <input type="hidden" name="returnUrl" value="@Model.ReturnUrl" />
        <button type="submit" class="btn btn-sm btn-danger"> Remove </button>
    </form>
</td>

接着在对应的Cart.cshtml.cs中编写了Post处理方法:

public IActionResult OnPostRemove(int id, string returnUrl)
{
    Cart.RemoveLine(Cart.Lines.First(cl => cl.Product.Id == id).Product);
    return RedirectToPage(new { returnUrl = returnUrl });
}

遇到的异常

点击删除按钮后,页面直接返回了400错误,而且后台的OnPostRemove方法完全没有被触发。我反复检查了参数传递、路由规则,都没发现问题,一度摸不着头脑。

最终解决方案

后来才意识到是标签助手没启用!我在_ViewImports.cshtml文件中添加了这行代码后,问题立刻就解决了:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

原因其实很简单:asp-page-handler是ASP.NET Core内置的标签助手属性,如果不启用标签助手,Razor引擎无法解析这个属性,导致表单提交的路由不符合预期,自然触发不了对应的Post方法,进而返回400错误。

内容的提问来源于stack exchange,提问作者ismet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:55:51