アプリでjQueryモーダルダイアログを使用して、通常のCRUD操作を処理しています。場合によっては、2つのスタックされたモーダルダイアログでさえ開いています。
次に、外部javascriptファイルに2つのジェネリック関数を作成して、CRUDフォームの表示と送信をそれぞれ処理しました。
モーダルダイアログを表示するには、次の関数を呼び出します
function _loadDialog(level, action, id, title, onCloseHandler) {
var panel = panels[level];
$(panel).dialog("option", "title", title);
var url = action;
if (id != "") url = url + "/" + id;
$.ajax({
type: "get",
dataType: "html",
url: url,
data: {},
success: function(response) {
$(panel).html('').html(response).dialog('open');
}
});
$(panel).unbind("dialogclose").bind("dialogclose", function(event, ui) {
if (onCloseHandler != null) {
onCloseHandler();
}
});
}
この関数は、とりわけ、level
ダイアログをスタックする方法と、ajax呼び出しから返されるレンダリングされた部分マークアップを配置する場所を関数に指示するパラメーターを受け取ります。この関数は正常に機能します。
ajax呼び出しによって返される部分ビューの内部に入力があり、最後に次のコードがあります
<div style="text-align:right;">
<input type="submit" id="btnSave" value="Salva" />
</div>
そして、例えば、jQueryの部分については、
$("#contactForm").submit(function(event) {
_submitForm(1, event, "#contactForm", "post", "html", '<%= Url.Content("~/Contact/Save") %>');
});
ご覧のとおり、送信機能には次の署名があります
function _submitForm(level, event, formName, atype, adataType, aurl) {
}
そしてそれは処理します
- 正しいコントローラーアクションへのフォーム送信
- ユーザーフィードバック(例:「アクションが正常に実行されました」)
- ダイアログを閉じる操作
レベルパラメータは、ダイアログを閉じることを含むすべての機能を、使用される正しいDIVパネルにアドレス指定するために必要です。
同じダイアログをダイアログとして表示したり、サブダイアログとして表示したりしたいと思います。
これを実行できるようにするには、「論理的に言えば」という意味です。私はjavascriptとjQueryにそれほど強くないため、次の変更が必要です。
- ダイアログマークアップ自体の中にパラメータ
_loadDialog
を保存するように関数を変更しますlevel
- 関数を変更し、以前に関数から保存され
_submitForm
た正しいパラメーターを使用して作成します。level
_loadDialog
どうすればこれを達成できますか?