2016-12-16 20 views
0

jquery UIダイアログボックス内で部分ビューを呼び出すサイトを構築しています。部分ビュー内には、フォーム上のデータをデータベースにコミットする「保存」ボタンがあります。現在、別のビューにリダイレクトされます。代わりにダイアログボックスを閉じてください。ダイアログボックスを閉じる関数を正しく呼び出すことができません。ここでMVC 5のコントローラアクションからJquery UIダイアログを閉じる必要があります

が私のコードです:

ビューで:コントローラで

<script type="text/javascript"> 
      $.ajaxSetup({ cache: false }); 
      $(document).ready(function() { 
       $(".diagSave").on("click", function (e) { 
        e.preventDefault(); 
        $("<div></div>") 
        .dialog({ 
         title: $(this).attr("data-dialog-title"), 
         modal: true, 
         width: 1000, 
         success: function() { 
         $('#diagSave').dialog('close'); 
        } 
        }) 

        .load(this.href); 
       }) 

      }); 
</script> 

return Json(new { success = true }, JsonRequestBehavior.AllowGet); 

誰かが、私はこれを達成することができますどのように指摘して助けてくださいことはできますか?

+0

保存ルーチンをメインフォームに移動すると、元のダイアログ定義のオプションに保存ボタンを追加できますか? – Steve

+0

このスクリプトはどこに追加しましたか?メインビューまたは部分ビューでは? – Perdido

+0

@perdido、これは私の主な考えです。 – silverbullettruck2001

答えて

0

代わりにjqueryで保存クリックを処理し、.serializeを使用してフォームコレクションをコントローラに送信してからダイアログを閉じます。

var formvalues = $('#yourformparentdiv form').serialize(); 
$.ajax({ 
    url: siteRoot + 'Home/YourControllerMethod', 
    data: formvalues, 
    async: true, 
    type: "POST", 
    ... 
+0

コントローラーからのダイアログを閉じることができない場合を除いて、すべての機能をそのまま残すことをお勧めします。 – silverbullettruck2001

0

この部分を処理して、partialviewから保存する必要がある場合は、そこでクリックイベント内で閉じる処理が必要です。

$("#partialview_savebutton").click(function(e){ 
    var $dlg = $(this).parents(".ui-dialog"); 
    //save the data 
    $dlg.dialog("close"); 
}); 

ダイアログにコンテンツを読み込むときに、このメソッドがバインドされていることを確認する必要があります。

私は一般にダイアログオープンルーチンの最後にこれを含めます。その後、

if(typeof initDlg == 'function') initDlg(); 

そして、私のイベントハンドラをバインドし、私は私のpartialviewで定義されて定義されinitDlg(){}以内に必要な任意の検証を設定します。

+0

コントローラーでクローズ機能の実行をトリガーするには何が必要ですか? – silverbullettruck2001

+0

コントローラには何もありませんが、部分的な見解で私の答えの最初のコードです。あなたはダイアログ要素を見つけて、closeを呼び出す必要があります – Steve

+0

ダイアログに読み込まれるhtml/jsのいくつかが参考になります。 – Steve

関連する問題