【发布时间】:2021-03-29 18:38:35
【问题描述】:
我需要从带有剃刀页面的购物车中删除一个项目。为此,我使用了带有 asp-page-handler 的表单。
购物车.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.html.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 });
}
当我单击删除按钮时,我收到 400 错误,并且我的 OnPostRemove 方法没有触发。
更新
我在我的 _ViewImports.cshtml 中包含了标签助手并解决了问题。
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
【问题讨论】:
-
嗨@İsmetKonuç,关于这个案例的任何更新?你解决了这个问题吗?
-
我在我的 _ViewImports.cshtml 中包含了标签助手并解决了问题。
-
如果不在the_ViewImports.cshtml文件中添加@addTagHelper指令,带有asp-page-handler的表单标签将无法很好地渲染,可能会导致500错误,你确定会导致400错误吗?
-
如果您按照我的建议使用 F12 开发人员工具“网络”选项卡中发布的数据检查实际请求,您会发现处理程序名称不包含在请求 URL 的查询字符串或路由数据中,如果标签帮助程序是视图不可用。
标签: c# asp.net-core razor .net-core razor-pages