2012-02-24 44 views
2

我有一個要求,當用戶點擊一個Ajax ActionLink時,顯示一個自定義的模態jQuery確認。但是,當我嘗試將其添加到Ajax鏈接時,ajax調用將繼續,並且不允許確認來停止該調用。我試過使用OnBegin函數,但是當我調用preventDefault時,它會拋出一個不支持的方法錯誤。如果我返回false,它不允許任何方式繼續通話。有人知道如何做到這一點?使用Ajax.ActionLink,我如何顯示自定義模態確認?

這裏是我想要添加的確認鏈接:

<div class="sign">@Model.Email | @Ajax.ActionLink("Sign Out", "SignOut", new { area = "", controller = "Account" }, new AjaxOptions { HttpMethod = "POST" })</div> 

這裏是我試圖執行代碼:

$('#MainNav ul li a, .header-top a').click(function (e) { 
     e.preventDefault(); 
     var link = $(this).attr('href'); 
     $('.confirm-dialog .confirm-this').attr('href', link); 

     $('.confirm-dialog').dialog({ 
      modal: true, 
      draggable: false, 
      overlay: { opacity: 0.8 }, 
      resizable: false, 
      width: 400, 
      open: function() { 
       $('.close-dialog').click(function (e) { e.preventDefault(); $(this).parents('.ui-dialog').remove(); }); 
       $('.confirm-this').click(function() { }); 
      } 
     }); 
    }); 

任何幫助將是很大的讚賞。我已經做了大量的搜索工作,試圖弄清楚這一點,但是我仍然面臨同樣的基本問題。如何在用戶點擊確認之前停止Ajax呼叫?

回答

1

不要過多依賴預定義的ActionLink方式。有兩種方法來歸檔此:

  1. 微軟unobstrucive的Ajax方法將被自動添加到鏈接 - 你必須使用jQuery刪除它們,並通過做你自己的Ajax調用。但是你必須在添加jquery後刪除這個處理程序 - 這可能很奇怪,我不知道什麼時候才能完成。

  2. 不要在您的案例中使用@Ajax.ActionLink - 只需使用@Url.Action構建您自己的標籤並將onclick處理程序設置爲您的標籤。但你也必須自己做ajax調用。

在這兩種情況下,建立自己的Ajax調用只是改變你的確認:

$('.confirm-this').click(function() { $.post(link) }); 
+0

謝謝你,馬克。我使用你的代碼片段來處理我的.confirm - 這個點擊函數,並添加一個只返回false的OnBegin函數。我感謝幫助! – Paul 2012-02-24 17:29:35

相關問題