ASP.NET MVC ActionLink和post方法

šlj*_*ker 96 asp.net-mvc actionlink

任何人都可以告诉我如何使用ActionLink和POST方法向Controller提交值?
我不想使用按钮.
我猜它有jquery的东西.

Aid*_*dos 71

如果您正在使用ASP MVC3,则可以使用Ajax.ActionLink(),它允许您指定可以设置为"POST"的HTTP方法.

  • 请注意,要使其工作,您必须包含一个ajax javascript文件,例如"`jquery.unobtrusive-ajax.min.js`".否则,单击时它将继续执行GET而不是POST.创建链接的语法如下:`@ Ajax.ActionLink("Delete","Delete",new {id = item.Id},new AjaxOptions {HttpMethod ="POST"})` (45认同)

AUS*_*eve 56

您不能使用,ActionLink因为它只是呈现锚<a>标记.
你可以使用jQuery AJAX帖子.
或者只是在有或没有jQuery(非AJAX)的情况下调用表单的提交方法,也许是在onclick你喜欢什么控制的情况下.


小智 20

您可以使用jQuery为所有按钮执行POST.只需给它们相同的CssClass名称.

使用"return false;" 在你的onclick javascript事件结束时如果你想在post之后做一个服务器端RedirectToAction,否则只返回视图.

剃刀代码

@using (Html.BeginForm())
{
    @Html.HiddenFor(model => model.ID) 
    @Html.ActionLink("Save", "SaveAction", "MainController", null, new { @class = "saveButton", onclick = "return false;" })
}
Run Code Online (Sandbox Code Playgroud)

JQuery代码

$(document).ready(function () {
        $('.saveButton').click(function () {
            $(this).closest('form')[0].submit();
        });
    });
Run Code Online (Sandbox Code Playgroud)

C#

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveAction(SaveViewModel model)
{
    // Save code here...

    return RedirectToAction("Index");
    //return View(model);
}
Run Code Online (Sandbox Code Playgroud)


goo*_*all 15

@Aidos有正确的答案只是想说清楚,因为它隐藏在@CodingWithSpike发表的帖子的评论中.

@Ajax.ActionLink("Delete", "Delete", new { id = item.ApkModelId }, new AjaxOptions { HttpMethod = "POST" })
Run Code Online (Sandbox Code Playgroud)


dan*_*ers 5

这是一个在默认的ASP.NET MVC 5项目中得到的答案,我相信它可以在UI中很好地完成我的样式目标.表单使用纯javascript提交到某些包含表单.

@using (Html.BeginForm("Logout", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
   <a href="javascript:document.getElementById('logoutForm').submit()">
      <span>Sign out</span>
   </a>
}
Run Code Online (Sandbox Code Playgroud)

完全显示的用例是Web应用程序导航栏中的注销下拉列表.

@using (Html.BeginForm("Logout", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
{
    @Html.AntiForgeryToken()

    <div class="dropdown">
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
            <span class="ma-nav-text ma-account-name">@User.Identity.Name</span>
            <i class="material-icons md-36 text-inverse">person</i>
        </button>

        <ul class="dropdown-menu dropdown-menu-right ma-dropdown-tray">
            <li>
                <a href="javascript:document.getElementById('logoutForm').submit()">
                    <i class="material-icons">system_update_alt</i>
                    <span>Sign out</span>
                </a>
            </li>
        </ul>
    </div>
}
Run Code Online (Sandbox Code Playgroud)