2016-09-14 59 views
0

我有一个MVC5视图,该视图中,我有:“返回false”不停止回发到控制器

@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post)) 
{ 
    // My controls 
    <input type="submit" id="btnSubmit" class="btn btn-primary" value="Submit" /> 
} 

我要的是张贴在之前进行Ajax调用检查记录计数控制器。

如果记录数很高,我想留在视图中并提示用户。

一切似乎都与视图仍然发布到MyAction的例外一起工作。我会预料到“回报错误”。为了防止这一点。

为什么“返回false”不会停止发送给控制器?

$("#btnSubmit").click(function (e) { 

     var p1= $("#Value1").val(); 
     var p2= $("#Value2").val(); 

     $.ajax({ 
      type: "GET", 
      url: "/MyController/GetRecordCount", 
      data: { "param1": p1, "param2": p2 }, 
      async: false 
     }).done(function (recCount) { 
      if (recCount> 999) 
      { 
       $(".showAdditionalInfo").show(); 
       return false; 
      } 
     }).fail(function (xhr, status, err) { 
      alert(xhr.responseText); 
     }); 
    }); 
+0

在ajax发布后发生返回false – holtc

+1

您将需要在if-else循环中包装$ .ajax调用 – holtc

回答

1

您的回报应该在点击处理程序本身内。现在它在AJAX回调中。

它应该是这个:

$("#btnSubmit").click(function (e) { 
     e.preventDefault(); 
     var p1= $("#Value1").val(); 
     var p2= $("#Value2").val(); 
     var doPost = true; 


     $.ajax({ 
      type: "GET", 
      url: "/MyController/GetRecordCount", 
      data: { "param1": p1, "param2": p2 }, 
      async: false 
     }).done(function (recCount) { 
      if (recCount> 999) 
      { 
       $(".showAdditionalInfo").show(); 
       doPost = false; 
      } 
     }).fail(function (xhr, status, err) { 
      alert(xhr.responseText); 
     }); 

     return doPost; 
    }); 

这假定Ajax请求也不会异步。一旦出现这种情况,就不能再工作了。

+0

它们返回false将永远不会允许发生帖子(在我的情况下,我希望它发布如果recCount小于999条记录 – PrivateJoker

+0

好的,我编辑了我的答案基本上,除非AJAX请求成功,并且'recCount'大于999,那么回发将发生,这是否满足您的要求? – arjabbar

+0

这就完成了我所需要的。ty。 – PrivateJoker