如何在动作链接调用之前自动提交表单?

时间:2013-10-23 15:02:40

标签: asp.net-mvc asp.net-mvc-3

我有一个ActionLink:

@Html.ActionLink("Edit","Edit","Item",new{Id=ItemId),null}

页面顶部有一个表单,当用户点击此链接时以及“编辑”操作调用之前,我需要保存该表单。

当用户点击链接时,实现此目的可能如下所示:

Save MasterForm
Carry on through to "Edit" Action on "Item" controller with "Id" parameter.

我的直觉告诉我,我可能正在寻找一些JS ???不确定。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

这样做的方法是:

  1. 向操作链接添加点击侦听器
  2. 使用Ajax提交表单
  3. 通过设置window.location
  4. 手动关注链接

    在表单提交时显示某种微调器或弹出窗口可能是个好主意,这样用户就会知道发生了什么。

    对于第1步,您需要选择<a>代码,因此我建议添加一个类:

    @Html.ActionLink("Edit","Edit","Item",new{Id=ItemId),new{@class="edit-link"}}
    

    然后添加一些Javascript来拦截点击:

    $(document).on("click", ".edit-link", function(e) {
        // stop the browser from following the link
        e.preventDefault();
        var linkUrl = $(this).attr("href");
    
        // submit the form via an Ajax post (assuming the form has "id=MasterForm")
        var form = $("#MasterForm");
        $.post(form.attr("action"), form.serialize(), function() {
    
            // when complete, navigate to the original link
            window.location = linkUrl;
        });
    });
    

答案 1 :(得分:1)

试试这个

 @Html.ActionLink("Edit","Edit","Item",new{Id=ItemId),new {@id='btn-link'}}

在JS中

$(document).ready(function(){

$('#btn-link').click(function(e){
    saveMasterFormDetails();
});

});

function saveMasterFormDetails(){

   var masterForm=$('#masterForm');

  $.post(url,masterForm.serialize(), function(data){
  });
}