如果使用AJAX呈现局部视图,Ajax.BeginForm会发布两次

时间:2013-10-04 09:56:52

标签: javascript jquery ajax asp.net-mvc

以下是该方案:

  1. 部分视图由某些JavaScript检索(AJAX调用控制器返回部分视图)并将HTML添加到DOM
  2. 部分视图包含由Ajax.BeginForm()
  3. 呈现的表单
  4. 提交表单(点击提交按钮)后,它会发布两次
  5. 如果我使用Html.Partial()使用原始视图呈现部分视图(而不是使用JavaScript添加它),则表单只会按预期提交一次。

    添加局部视图的脚本如下所示:

    $.ajax({
       type: 'GET',
       url: '/MyController/MyAction',
       cache: false,
       contentType: "application/html; charset=utf-8",
       dataType: 'html',
       success: function (result) {
          $('#body').append(result);
       }
    });
    

    有什么想法吗? :)谢谢!

1 个答案:

答案 0 :(得分:8)

我是个白痴。我的控制器返回查看而不是 PartialView - 因此它当然包含所有JavaScript资源。换句话说,问题是由双重不显眼的脚本链接引起的。 :/