我在我的应用程序中使用 jQuery 模态对话框来处理正常的 CRUD 操作。在某些情况下,我什至打开了两个堆叠的模式对话框。
然后,我在外部 javascript 文件中创建了两个通用函数,分别处理 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 调用返回的渲染的 Partial 标记的位置。此功能工作正常。
在 ajax 调用返回的 Partial View 内部有输入,最后是以下代码
<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) {
}
它处理
- 表单提交到正确的控制器动作
- 用户反馈(例如“动作执行成功”)
- 对话框关闭操作
需要 level 参数来处理所使用的正确 DIV 面板的所有功能,包括关闭对话框。
我希望能够有时将相同的对话框显示为对话框,有时显示为子对话框。
为了能够做到这一点,我的意思是“从逻辑上讲”,因为我对 javascript 和 jQuery 不那么强大,我需要进行以下更改:
- 修改
_loadDialog
函数以将level
参数保存在对话框标记本身内 - 修改
_submitForm
函数并使用之前从函数中level
保存的正确参数进行设置。_loadDialog
我怎样才能做到这一点?