模态对话框和__doPostback无限循环

本文关键字:doPostback 无限循环 对话框 模态 | 更新日期: 2023-09-27 17:50:14

我已经使用ModalPopupExtender创建了一个模态对话框。其中有一个使用Webservices和JQuery模板创建的UI。还有一个隐藏的ASP。. NET按钮,使用__doPostback()技术从javascript中调用。javascript隐藏了模态弹出窗口,__doPostback在按钮上被调用(它在ModalPopupExtender中)

我使用这种技术来传递来自javascript的一些参数。服务器端事件处理程序执行一些处理并传输到页面(在某些情况下,传输回自身)

当它传输到的页面是不同的页面时,这很好,但如果它传输到相同的页面,回发会一次又一次地发生,直到堆栈爆炸。

当我回发到同一页面时,如何阻止回发再次发生?我猜第一次不会发生,因为它发送到另一个页面,并且回发无效。

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

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

模态对话框和__doPostback无限循环

嗯,您正在发回,因此您可以在服务器端控制您的标记。只需要把转发的javascript放到一个容器中如果是页面自己转发,就把容器藏起来这样它就不会被加载到页面....

或者你可以做客户端cookie或querystring参数。

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

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

如果你不能发现是什么在调用你的事件链,那么你可能会考虑,而不是转移回相同的页面转移到一个新的页面(bounce.aspx),这反过来调用响应。将BACK重定向到该页,使其在重新加载时不是Postback,而是该页的新实例。(是的,这是一个拼凑,但它可能是一个有效的权宜之计…)

欢呼,

CEC

感谢您的回复。我想我已经找到解决办法了。

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

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

改成:

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

修复问题。

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

很奇怪,也许我误解了。net的一些基本知识

编辑-是的,我对。net有很多误解。它有时使我头疼。

Thanks for the help