2012-03-07 31 views
4

特定の条件が満たされている(ユーザーが変更を保存していない)場合にのみ、確認ダイアログボックスを表示する@Ajax.ActionLinkがあります。私は、必要に応じて確認ダイアログを表示するjavascript関数を作成し、応答に基づいてtrueまたはfalseを返します。私はそれをActionLinkのonclickイベントに結びつけましたが、誤った結果はそのアクションをキャンセルしません。ここに私のコードのサンプルです:ASP.NET MVC3 Ajax.ActionLink - 条件付き確認ダイアログボックス

@Ajax.ActionLink("Done", .. , .. , 
        new AjaxOptions() { UpdateTargetId = "MyContainerId"}, 
        new { onclick = "ConfirmDone()" }) 

ここではjavascript関数だ

function ConfirmDone() { 
    //for testing purposes we can always show the dialog box 
    return confirm("Are you sure you want to lose unsaved changes?"); 
} 

Ajax.ActionLinkのための条件を確認するダイアログボックスを表示するための最良の方法は何ですか?

+0

ここで説明したように、私は別のフォームとボタンを使用します http://stackoverflow.com/a/30759201/869290 – fireydude

答えて

12

はOnBeginイベントを使用します。

@Ajax.ActionLink("Done", "ActionName", 
    new AjaxOptions 
    { 
     OnBegin = "return ConfirmDone()", 
     UpdateTargetId = "MyContainerId" 
    }) 

すべてを行う必要がポップである場合にも確認Ajaxのオプションを使用することができます確認ボックスを開きます。カスタムロジックを追加する必要がある場合(またはカスタムダイアログを使用する場合)は、OnBeginを使用する必要があります。ここ

は確認の使用例である:

@Ajax.ActionLink("Done", "ActionName", 
    new AjaxOptions 
    { 
     Confirm= "Are you sure you want to do this?", 
     UpdateTargetId = "MyContainerId" 
    }) 
+0

ありがとう!私は以前にOnBeginを試しましたが、そのリターンキーワードがありませんでした – Alex

-1

私はあなただけで次のようにそれを変更する必要があると思う:

@Ajax.ActionLink("Done", .. , .. , 
       new AjaxOptions() { UpdateTargetId = "MyContainerId"}, 
       new { onclick = "return ConfirmDone();" }) 
+0

ほぼ正しいです。あなたは正しいアイデアを持っていました。私は戻り値を見逃していましたが、関数はOnBeginセクション – Alex

+0

-1で実行する必要があります。これは動作しません。 – Derrick

関連する問題