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

Razor Page中asp-page-handler无法触发处理器并报400错误

解决Razor Page购物车移除按钮触发400错误、OnPostRemove未执行的问题

我之前也碰到过一模一样的情况,先梳理下你的场景:你在Razor Page里开发购物车商品移除功能,用了带asp-page-handler属性的表单,前端和后端代码都写好了,但点击移除按钮时直接报400错误,后端的OnPostRemove方法完全没触发。

先贴出你提到的代码方便大家对照:

前端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的OnPostRemove方法:

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

问题根源与解决方案:

这个问题的核心是Razor Page的官方标签助手没有被注册,asp-page-handler这类特殊属性需要依赖Microsoft.AspNetCore.Mvc的标签助手才能正确解析,生成符合Razor Page路由规则的请求参数。

你只需要在_ViewImports.cshtml文件中添加下面这行代码,完成标签助手的注册:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

添加之后,标签助手会自动处理asp-page-handler属性,在表单提交时正确携带handler参数,后端就能正常接收到请求并执行OnPostRemove方法,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:52:11