【发布时间】:2010-10-26 02:58:49
【问题描述】:
我有一个使用母版页模板的 ASP.Net 网页。
页面有一个带有一些基本 AJAX 功能的 UpdatePanel(更改 DropDownList 的值,UpdatePanel 将刷新)。这一切都很好。
我还有一个链接,弹出一个 nyromodal 模态,在模态内部,加载了另一个 ASP.Net Web 表单。因为我希望这个页面本身有自己的功能,而不仅仅是一个静态页面等。它准确地说是“创建新”对话。所以它会创建一条新记录,然后当它关闭时,您会返回主“记录列表”页面等。
我正在使用以下 jQuery 代码来启动 nyromodal 调用。此代码还包括各种其他调整和设置,以使 nyromodal 与 ASP.Net 更兼容,因为这是我在 nyromodal 和 ASP.Net 之间遇到并解决的第 5 次连续不兼容问题(课程:远离 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 协同工作的其他几个问题。它甚至使用了阻止器:#aspnetForm 位来阻止 nyromodal 超出名为 aspnetForm 的 ASP.Net 主要回发表单,该表单旨在解决almost identical problem。
但是..
我正在加载到我的模式中的网页也是一个 .Net 网络表单。所以它当然也有自己的内置回发aspnetForm。所以当模态出现并且我使用 FireBug 检查 DOM 结构时,我现在实际上有两个 ASP.Net 表单(嵌套)。并且因为 nyromodal 本质上只是一个 div(或几个 div),所以表单标签本质上是嵌套的。
所以我认为这是把事情搞砸了。它实际上完全使 IE7 崩溃(致命异常)。 IE7 + FireFox:当我关闭对话框时,我的主 Web 表单将不再回发。我认为它被刚才的 2 个表单标签弄糊涂了。
能够使用 nyromodal 打开一个 ASP.Net Web 表单作为您的模态内容应该是一个非常简单的要求。我确实将其归咎于 ASP.Net,因为它如此蹩脚并在每个页面中都放置了一个强制性的“表单”标签。如果我使用的是 PHP,我今天就不会遇到任何这些问题,但我被困在使用 ASP.Bloat 来工作。
非常感谢任何想法或见解! :)
【问题讨论】:
-
老实说,我不得不放弃在模式中加载另一个 Web 表单的想法,并且可能不得不将“模式页面”移动到原始父页面内的 div 中。然后让 nyromodal 显示 div 内容,这反过来又在逻辑等背后有自己的代码。有什么想法吗?
标签: jquery asp.net-ajax webforms nyromodal