好让我的脚湿与MVC。我正在尝试构建用户配置文件类型页面。该页面由多个部分组成,每个部分都通过局部视图加载。asp.net MVC-如何获得jQuery的AJAX工作后调用
我希望能够单独编辑每个部分的jQuery的UI模式对话框内。我有这一切正常工作(包括加载编辑视图通过阿贾克斯进入模式,并提交更改)。
我的问题是,任何ajax调用后,我的jQuery UI对话框停止工作,所以我无法关闭或打开一个对话框。
我可以,当然,解决的事情,像按钮clicsk与.live方法,但我不能想出得到了jQuery UI的项目继续工作的最佳途径。
什么是去了解这一点的最好方法是什么?我想我很困惑,以前在ajax调用之后加载jQuery插件会发生什么。我应该能够从我的主页上引用ajax加载内容的元素吗?
编辑: 好的...继承人一些代码来显示发生了什么....
用户点击用户信息部分的编辑按钮
$('#editInfo').live("click", function() {
dialogInit(450, 550, 'User Information');
$('#dialog').dialog('open')
$.ajax({
type: 'GET',
url: '../info/edit',
data: {},
success: function (response) {
$('#dialog').html(response); //loads the partial edit view into the dialog div...works fine to here.
}
});
return false;
});
发生这种情况后我有带有保存按钮的屏幕上的模式。当点击保存按钮,我张贴我的AJAX框架调用这个JS成功函数...
function infoUpdate(response) {
dialogInit(450, 550, 'User Information');
$('#dialog').dialog('close');
$('#info').html(response);
}
这将加载新的用户信息局部视图到适当的div的主网页...工作正常。 ..
这里的问题是,对话框没有关闭...所以它的引用似乎丢失,即使我用我的dialogInit函数重新初始化...看起来像这样...
function dialogInit(height, width, title) {
$('#dialog').dialog({
autoOpen: false,
modal: true,
draggable: false,
resizable: false,
height: height,
width: width,
title: title
});
}
编辑2:
上面的代码也使我的AJAX的形式发布多次...另外的时间我每次点击提交按钮......不好
我无法专门回答你关于MVC的问题,但它可能与ASP.NET WebForms AJAX调用的方式相同。 AJAX面板被完全替换为新的DOM元素,这就是为什么旧事件不再有效。请参阅:http://stackoverflow.com/questions/256195/jquery-document-ready-and-updatepanels/256253#256253 – 2011-01-30 19:05:49
在这种情况下,我的局部视图只取代对话框div内的HTML,所以我不明白为什么我会失去对UI对话框小部件初始化的外部div的引用 – stephen776 2011-01-30 19:08:28
我还计划重新使用一个UI对话框来显示每个部分的编辑表单......这会被认为是最佳实践吗? – stephen776 2011-01-30 19:09:16