2012-02-24 4 views
2

ユーザーがAjax ActionLinkをクリックしたときに、カスタムモーダルjQuery確認を表示する必要があります。しかし、これをAjaxリンクに追加しようとすると、ajax呼び出しが続行され、呼び出しを停止する確認ができなくなります。私はOnBegin関数を使ってみましたが、preventDefaultを呼び出すと、サポートされていないエラーが発生します。私が偽を返すなら、それは決して通話を続けることを許さない。誰もこれを達成する方法を知っていますか?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() { }); 
      } 
     }); 
    }); 

すべてのヘルプは非常だろう感謝。私はすでに多くの検索をしてこれを理解しようとしましたが、同じ基本的な問題が残されています。ユーザーがConfirmをクリックするまで、Ajaxコールを停止するにはどうすればよいですか?

答えて

1

あらかじめ定義されたActionLinkの方法にあまり依存しないでください。これをアーカイブするには、2つの方法があります。

  1. マイクロソフトunobstrucive Ajaxの方法は、リンクに自動的に追加されます - あなたはjQueryを使ってそれらを削除し、独自でAJAX呼び出しを行う必要があります。しかし、jqueryが追加された後にハンドラを削除する必要があります。これは奇妙なことかもしれません。正確に行うタイミングがわかりません。

  2. あなたのケースでは@Ajax.ActionLinkを使用しないでください - @Url.Actionで独自のタグを作成し、あなたのタグにonclickハンドラを設定してください。しかし、自分でもajaxコールを行う必要があります。ちょうどあなたの確認を変更する独自のAJAX呼び出しを構築するために、両方のケースで

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

は、マルク、ありがとうございました。私はあなたのスニペットを私の.confirm-click関数のために使い、OnBegin関数を追加してfalseを返すようにしました。私は助けに感謝します! – Paul

関連する問題