【问题标题】:View components can't link to POST action methods?视图组件无法链接到 POST 操作方法?
【发布时间】:2018-01-24 11:31:09
【问题描述】:

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

<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-链接时,我会被定向到一个空白页面,例如 URL 为 /Home/Update/5,然后就没有任何反应了。即使我在调试模式下运行并在Update-方法的第一行设置断点也是如此。 Update 是一个 POST 方法。这有关系吗?

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

发生了什么事?

【问题讨论】:

标签: c# asp.net-core asp.net-core-viewcomponent


【解决方案1】:

您不能通过单击链接来调用 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
    });
});

【讨论】:

  • 只是补充一点,当你点击一个链接时(并且点击不会被 JS 拦截),你的浏览器会对该 URL 进行 HTTP GET。要进行 POST(或使用任何其他方法),您必须在 JavaScript 中使用表单或 AJAX。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多