2016-09-14 61 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