我有一个ASP.Net网页,它使用母版页模板。
该页面有一个带有一些基本AJAX功能的UpdatePanel(更改DropDownList的值,UpdatePanel将刷新)。这一切都很好。
我还有一个弹出一个nyromodal Modal的链接,在模态中,另一个ASP.Net网页表单被加载..因为我希望这个页面本身具有自己的功能,而不仅仅是一个静态页面等。准确地说是“创造新的”对话。因此它会创建一个新记录,然后当它关闭时,您将返回主“记录列表”页面等。
我正在使用以下jQuery代码来启动nyromodal调用。此代码还包括各种其他调整和设置,使nyromodal与ASP.Net更兼容,因为这是我在nyromodal和ASP.Net之间遇到并解决的第5次连续不兼容性(课程:远离ASP.Net)< / p>
$(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进入ASP.Net的主要回发形式aspnetForm,这意味着要解决almost identical problem。
但..
我正在加载到我的模态中的网页也是一个.Net网络表单。所以它当然也有自己的内置回发aspnetForm。因此,当模态出现并且我使用FireBug来检查DOM结构时,我实际上现在有两个ASP.Net表单(嵌套)。因为nyromodal本质上只是一个div(或几个div),所以表单标签基本上是嵌套的。
所以我认为这会让事情变得很糟糕。它实际上完全崩溃了IE7(致命的例外)。 IE7 + FireFox:当我关闭对话框时,我的主网页表单将不再回发。我认为它刚刚被那里的2个表格标签搞糊涂了。
能够使用nyromodal打开ASP.Net Web表单作为模式的内容应该是一个非常简单的要求。我确实把它归咎于ASP.Net,因为它太蹩脚了,并且在每一页都加了一个强制性的“表单”标签。如果我使用的是PHP,我就不会遇到今天遇到的任何问题,但是我仍然坚持使用ASP.Bloat进行工作。
任何想法或见解都非常感谢! :)
答案 0 :(得分:0)
我实际上是报告该问题的人。首先,你有没有尝试过jimbobmcgee的ASP.NET nyroModal插件(在你链接的同一页面上)developed?我还没有,因为我很想找到时间通过所包含的文档。如果你这样做,让我知道我是如何为你工作的。
这实际上是完美的时机......另一个替代方案,即我正在调查中,正在使用普通的HTML页面而不是模态中的WebForms。所以,我打算将我的服务器端代码包装在一个web服务中,并使用jQuery来调用它,并返回一个JSON响应。
原谅我的解释的准确性,因为我刚开始使用webservices和页面方法,所以我也在学习。因此,我要求某人发布一个简单的“Hello World”示例。
希望有所帮助。
答案 1 :(得分:0)
如果你把它放在页面的头部。它允许nyro模态关闭来模拟回发。
<script type="text/javascript">
$(document).ready(function(){$.nyroModalSettings({
modal: true,minWidth: ###,minHeight: ###,
endRemove:function(){
document.location='pageYouWantToRefresh.aspx';
}
});});
</script>
只需更改document.location即可在窗口关闭时进入。
答案 2 :(得分:0)
您是否考虑过将模式中的页面作为iFrame打开,以便其内容(新的表单标记等)不会干扰主页?
$(this).nyroModalManual({type:'iframe'});
答案 3 :(得分:0)
我发现最简单的解决方案是将弹出窗口加载为iframe,而不是内联或通过AJAX加载。只是一个想法。 :)