1

我有一个 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 ???没有把握。

非常感谢任何帮助。

4

2 回答 2

2

这样做的方法是:

  1. 将点击监听器添加到操作链接
  2. 使用 Ajax 提交表单
  3. 通过设置手动点击链接window.location

在提交表单时显示某种微调器或弹出窗口可能是个好主意,以便用户知道正在发生某些事情。

对于第 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;
    });
});
于 2013-10-23T15:09:05.393 回答
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){
  });
}
于 2013-10-23T15:08:40.360 回答