双回发问题

时间:2008-08-21 15:55:13

标签: asp.net .net-1.1

我有一个ASP.NET 1.1应用程序,我试图找出为什么当我更改一个用于填充另一个值(父子关系)的ComboBox时,会产生两个回发。

我检查并检查了代码,但我找不到原因。

以下是以page_load结尾的两个调用堆栈

第一次回发(由ComboBox的autopostback生成)

Postback call stack http://www.juanformoso.com.ar/images/callstack1.jpg

第二次回发(这就是我想找到它为什么会发生的事情)

alt text http://www.juanformoso.com.ar/images/callstack2.jpg

有什么建议吗?我可以检查什么?

5 个答案:

答案 0 :(得分:4)

这个代码是一个非常具体的问题,我怀疑它对其他人有用,但在这里它是:

检查已添加到组合的onchange中,并带有if,如果满足条件,则会显式调用回发函数。 如果组合设置为AutoPostback,则asp.net再次添加回发调用,产生两个回发...

生成的html是这样的:

[select onchange="javascript: if (CustomFunction()){__doPostBack('name','')}; __doPostBack('name','')"]

答案 1 :(得分:0)

我要寻找的第一件事是你没有将第二个ComboBox的AutoPostBack属性设置为true。如果你改变第二个组合中的值,该属性设置为true,我相信它会在该控件上生成一个回发。

答案 2 :(得分:0)

你有可以分享的代码吗?双重帖子在当天困扰我的经典ASP,这最终促使我一劳永逸地切换到.NET。每当我遇到.NET这样的问题时,我都会去每个CONTROL和每个PAGE元素,比如load,init,prerender,click,SelectedIndexChanged等,并设置一个断点。

即使我没有代码,我也会插入类似的内容:

Dim i As Integer
i = 0

我通常能够确定一些我没想到的动作,并根据需要进行修复。我建议你这样做。

祝你好运。

答案 3 :(得分:0)

检查Request.Form [“__ EVENTTARGET”]以找到启动回发的控件 - 这可能会帮助您缩小范围。

查看callstacks,以及一些Reflectoring(进入ASP.NET 2 - 我没有1.1方便) - 看起来SessionStateModule.PollLockedSessionCallback是HttpApplication启动例程的一部分。您的应用可能正在被回收 - 我非常确定将事件写入事件日志中。

我唯一的其他建议是Fiddler或客户端上的东西来捕获HTTP流量。

答案 4 :(得分:0)

这是一篇非常古老的帖子,但人们仍然在寻找与上周完全相同的解决方案。

就像格兰比说的那样,Double事件是主要原因 - 但是删除其中一个事件并不是一个选择。至少在我的情况下,我必须在第三方的申请中解决这个问题。

我在主页上添加了以下脚本并修改了ASP表单:

<script>var Q = 0;</script>
<form id="Form1" runat="server" onsubmit="Q++; if(Q==1){return true;} else { return false;}">

这似乎有效,请转发您的意见。

阿伦

http://www.velocityreviews.com/forums/t117900-asp-net-multiple-postback-issue.html

相关问题