我有一个使用母版页模板的 ASP.Net 网页。
该页面有一个带有一些基本 AJAX 功能的 UpdatePanel(更改 DropDownList 的值,UpdatePanel 将刷新)。这一切都很好。
我还有一个链接会弹出一个 nyromodal 模态,在模态内部,加载了另一个 ASP.Net Web 表单。因为我希望这个页面本身有自己的功能,而不仅仅是一个静态页面等。它是一个“创建准确地说是新的”对话。因此它会创建一条新记录,然后当它关闭时,您将返回主“记录列表”页面等。
我正在使用以下 jQuery 代码来启动 nyromodal 调用。此代码还包括各种其他调整和设置,以使 nyromodal 与 ASP.Net 更兼容,因为这是我在 nyromodal 和 ASP.Net 之间面临并解决的第五次连续不兼容问题(课程:远离 ASP.Net)
$(document).ready(function(){
$(function(){
$('.modal').live('click', function(evt){
$(this).nyroModalManual({'blocker':'#aspnetForm',minWidth:640,minHeight:400,endShowContent:function(elt, settings) { $('input:text:first', elt.content).focus(); }});
evt.preventDefault();
});
});
});
这段代码运行良好(感谢 Brian),因为它解决了 ASP.Net 和 nyromodal 一起工作的其他几个问题。它甚至使用了 blocker:#aspnetForm 位来阻止 nyromodal 超出 ASP.Net 的名为 aspnetForm 的主要回发表单,这旨在解决几乎相同的问题。
但..
我正在加载到我的模式中的网页也是一个 .Net 网络表单。所以它当然也有自己的内置回发aspnetForm。所以当模态出现并且我使用 FireBug 检查 DOM 结构时,我现在实际上有两个 ASP.Net 表单(嵌套)。而且因为 nyromodal 本质上只是一个 div(或几个 div),所以表单标签本质上是嵌套的。
所以我认为这是把事情搞砸了。它实际上完全使 IE7 崩溃(致命异常)。IE7 + FireFox:当我关闭对话框时,我的主 Web 表单将不再回发。我认为它对刚才出现的 2 个表单标签感到非常困惑。
能够使用 nyromodal 打开 ASP.Net Web 表单作为模态的内容应该是一个非常简单的要求。我确实将其归咎于 ASP.Net,因为它如此蹩脚并在每个页面中都放置了一个强制性的“表单”标签。如果我使用的是 PHP,我今天就不会遇到任何这些问题,但我坚持使用 ASP.Bloat 进行工作。
非常感谢任何想法或见解!:)