1

我有一个使用母版页模板的 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 进行工作。

非常感谢任何想法或见解!:)

4

4 回答 4

0

您是否考虑过将模式中的页面作为 iFrame 打开,以便其内容(新的表单标签等)不会干扰主机页面?

$(this).nyroModalManual({type:'iframe'});
于 2009-11-08T17:58:44.413 回答
0

我实际上是报告该问题的人。首先,您是否尝试过 jimbobmcgee(在您链接到的同一页面上)开发的 ASP.NET nyroModal 插件?我还没有,因为我没有找到时间阅读所包含的文档。如果你这样做,让我知道我是如何为你工作的。

这实际上是完美的时机......我正在调查的另一种选择是在模式中使用普通的 HTML 页面而不是 WebForms。因此,我打算将我的服务器端代码包装在一个 web 服务中,并使用 jQuery 对其进行调用,并返回一个 JSON 响应。

请原谅我的解释的准确性,因为我刚开始使用 web 服务和页面方法,所以我太学习了。因此,我要求某人发布一个简单的“Hello World”示例。

希望那些对你有帮助。

于 2009-05-14T13:44:16.360 回答
0

如果你把它放在页面的头部。它允许 nyro 模态关闭来模拟回发。

<script type="text/javascript">
$(document).ready(function(){$.nyroModalSettings({
  modal: true,minWidth: ###,minHeight: ###,
  endRemove:function(){
   document.location='pageYouWantToRefresh.aspx';
  }    
});});  
</script>

只需更改 document.location ,当窗口关闭时它就会到那里。

于 2009-09-28T20:09:56.353 回答
0

到目前为止,我发现的最简单的解决方案是将弹出窗口加载为 iframe,而不是内联或通过 AJAX。只是一个想法。:)

于 2009-11-10T00:28:21.283 回答