视图组件不能 link 到 POST 操作方法?

View components can't link to POST action methods?

我有一个视图组件,其中包含一些指向家庭控制器中不同操作方法的操作 link,如下所示:

<a asp-action="Update" asp-route-id="@item.ProductId">Update quantity</a>
<a asp-action="Details" asp-route-id="@item.ProductId">@item.ProductTitle</a>

操作方法 Details 是一个 GET 方法,正在按预期执行。

但是当我点击 Update-link 时,我被定向到一个空白页面,例如 url 或 /Home/Update/5,什么也没有更多发生。即使我在调试模式下 运行 并在 Update 方法的第一行设置断点也是如此。 Update 是一种 POST 方法。这重要吗?

在任何一种情况下,Update 都不会被执行。

这是怎么回事?

您不能通过单击 link 来调用 POST 请求。

为此,您需要使用 ajax 或表格。 这取决于您的需要。

使用形式:

<form asp-action="Update" asp-route-id="@item.ProductId" method="post">
    <button type="submit">Update quantity</button>
</form>

使用ajax:(假设你有jQuery)

$('<update-link-selector>').on('click', function (e) {
    e.preventDefault();
    var href = $(this).attr('href');

    $.post(href).done(function(response, status, xhr) {
        //success 
    }).fail(function(err) {
        //error
    });
});