【问题标题】:How to make action link created by razor make POST?如何使剃须刀创建的动作链接制作POST?
【发布时间】:2018-09-25 17:41:13
【问题描述】:

我在我的项目中使用 mvc 5。

我使用 razor 创建操作链接,通过 GET 方法将一些数据发送到操作方法。

这是操作链接:

<tbody>
    @foreach (var item in Model)
         {
               <tr><td>@Html.ActionLink(item.Name, "About", "Home", item, new { @class = "btn btn-featured btn-white height-30 width-100" })</td></tr>
         }
 </tbody>

我的问题是如何更改上面创建的操作链接,使其通过 POST 发送数据到操作方法?

【问题讨论】:

  • ActionLink 助手总是使用GET,因为它会生成锚标记。如果要执行 POST 请求,请改用jQuery.ajax() 或普通表单提交。
  • 一个链接产生一个 GET。如果您想要 POST,请使用表单并提交
  • 或者你可以处理click事件并在事件处理程序中使用fetch$.ajax()来发出POST请求

标签: c# asp.net-mvc


【解决方案1】:

您正在使用 HTML 锚链接,它总是从浏览器执行 GET 操作。

如果您的要求是发帖,您可以使用以下方法之一:

1.阿贾克斯帖子

@Ajax.ActionLink("About", "Home", new { id = "myForm", @class = "btn btn-featured btn-white" }, new AjaxOptions { HttpMethod = "POST" })

要使用@Ajax,您需要从以下位置添加一个 nuget 引用: https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/

这将为您的项目添加新脚本 (jquery.unobtrusive-ajax.min.js)

没有这个,它将继续使用 GET 作为您的方法。

2。表单提交帖子

@using (Html.BeginForm("About", "Home", FormMethod.Post, new { id = "myForm", @class = "btn btn-featured btn-white" }))
{
   <a href="javascript:document.getElementById('myForm').submit()">
      <span>Submit</span>
   </a>
}

【讨论】:

  • 我试过了:@Ajax.ActionLink(item.Name, "About", "Home", item, new AjaxOptions { HttpMethod = "POST" }, new { @class= "btn btn-精选 btn-white height-30 width-100" }) 但是当我查看 fiddler 时,它显示 GET 请求
  • 我应该把 foreach 放在哪里?
  • @Michael 假设我理解正确,在using 内部,&lt;a&gt;&lt;/a&gt; 将进入foreach 内部
  • 注意@Ajax.ActionLink 助手:stackoverflow.com/questions/22420512/…。此外,在使用submit() 函数之前可能需要使用preventDefault()
  • @Michael - 我已经更新了答案。请添加对nuget包的引用nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 2019-03-18
  • 2020-12-02
相关资源
最近更新 更多