使标记帮助程序像“ a”一样“按钮”工作

Ser*_*rge 2 c# asp.net-core-mvc asp.net-core

在ASP.NET Core中,我可以将操作设置为链接项a,但是如果将其更改为按钮,则该操作将不再起作用。

将动作/控制器绑定到button点击的正确方法是什么?

<a asp-action="Delete" asp-route-id="@item.Id">remove</a> @*work*@
Run Code Online (Sandbox Code Playgroud)

<button asp-action="Delete" asp-route-id="@item.Id">remove</button> @*does not work*@
Run Code Online (Sandbox Code Playgroud)

SO *_*ood 5

并不是说它不起作用,它们是具有不同用法的不同Tag助手:
如果将鼠标悬停在上,<a>您将看到的实现AnchorTagHelper,而该<button>实现FormActionTagHelper则应该在中使用,因为它应该在中使用<form>

因此,为了获得相同的行为,您可以这样做:

<a asp-action="Index">aaaa</a>

<form>
    <button asp-action="Index">bbbbb</button>
</form>
Run Code Online (Sandbox Code Playgroud)

但是请注意,按钮显示为formaction="/",而不是显示为href="/",这就是为什么需要将其包装在表单中。第二个也可以这样写:

<form asp-action="Index">
    <button type="submit">bbbbb</button>
</form>
Run Code Online (Sandbox Code Playgroud)