2011-04-12 30 views
0

我有一个使用ModalPopupExtender创建的模态对话框。有一个使用Webservices和JQuery模板创建的UI。还有一个隐藏的ASP.NET按钮,它使用__doPostback()技术从JavaScript中调用。 JavaScript隐藏模式弹出和__doPostback被称为按钮(这是在ModalPopupExtender里面)模态对话框和__doPostback无限循环

我使用这种技术来传递一些参数是从JavaScript。服务器端事件处理程序会执行一些处理并转移到一个页面(在某些情况下会转移回页面)

当它转移到的页面是不同的页面时,它可以正常工作,但如果它转移到同一页面,回传发生一遍又一遍,直到堆叠吹。

当我回发到同一页面时,如何停止回发。我想这并不是第一次发生,因为它发布到不同的页面并且回发被无效。

代码示例很难提供,因为它是一个相当复杂的系统,很难将其分开。

听起来很可怕我知道,我想要做的,但是,它从JavaScript调用服务器端函数与一些变量。有一个更好的方法吗?

回答

1

嗯,你回来了,所以你有服务器端控制你的标记。只是坚持你的JavaScript的转载在容器中的情况下,并在页面发布到自己的情况下,隐藏该容器,因此它不会加载到页面...

这或你可以做客户端Cookie或查询字符串PARAM。两者都可能是不可靠的。

1

没有代码示例,我只能推测并希望将您指向正确的方向。

当您转移到新页面时,旧页面(因此该页面上的JavaScript)超出了范围,因此不会继续执行。但是,如果页面重新加载并且调用__doPostback的条件继续,那么您已创建导致问题的循环引用。在调用__doPostback之前,当您仍然在客户端上时,您需要清除可能导致事件链的任何情况。

如果你不能发现什么在调用你的事件链,那么你可能会认为,而不是转回到同一页面转移到一个新的页面(bounce.aspx),然后调用一个response.redirect返回页面以便它在重新加载时不是回发,而是新的页面实例。 (是的,这是个杂牌组装电脑,但它可能是一种有效的权宜...)

干杯,

CEC

0

感谢您的答复。我想我已经找到了解决方案。

在服务器端回调我这样做:

setupPage(); 
Server.Transfer("mypage.aspx", true); 

将其更改为这样:

setupPage(); 
Server.Transfer("mypage.aspx"); 

解决了这个问题。

SetupPage()将所有数据存储在隐藏字段中,并且我认为保留表单状态将是必要的,以便在传输之后驻留。这似乎并不是这样,因为我在转移之前在页面中完成的所有设置似乎仍然存在。

奇或也许我误解一些关于.NET

编辑基本的 - 是的,我误会了很多关于.NET。它有时使我的头部受伤。

感谢您的帮助