2008-08-21 70 views
4

我有一個ASP.NET 1.1應用程序,我試圖找出爲什麼當我改變一個ComboBox的值用於填充另一個(父 - 子關係)時,產生兩個回發。雙回發問題

我檢查並檢查了代碼,但我找不到原因。

這裏有兩個調用棧,其在Page_Load中結束

第一回發(由德組合框的自動回生成)

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

二回發(這是我想找到它的原因是什麼)

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

什麼建議嗎?我可以檢查什麼?

+2

將是巨大的,如果你重新上傳你的圖片:) – Neysor 2012-04-01 08:53:51

回答

3

這是一個非常具體的問題,此代碼,我懷疑這將是爲別人有用的,但這裏有雲:

支票被添加到組合的onchange有如果,如果條件得到滿足,顯式調用回發函數。 如果組合設置爲AutoPostback,asp.net再次添加回發的呼叫,產生兩個回傳...

生成的HTML是這樣的:

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

我會尋找的第一件事是你沒有第二個ComboBox的AutoPostBack屬性設置爲true。如果你在第二個組合中改變了該屬性的值,設置爲true,我相信它會在該控件上生成一個回傳。

0

你有什麼代碼可以分享嗎? Double post backs困擾了我很多經典的ASP,那天終於讓我徹底改用.NET了。每當我遇到像.NET這樣的問題時,我會去每個CONTROL和每個PAGE元素,比如load,init,prerender,click,SelectedIndexChanged等,並放置一個斷點。

即使我沒有代碼那裏,我會插入類似:

Dim i As Integer 
i = 0 

我通常能夠找出一些動作,我沒想到,並根據需要修復。我建議你在這裏做。

祝你好運。

0

檢查Request.Form [「__ EVENTTARGET」]找到控制啓動回發 - 這可能會幫助您縮小範圍。看看調用堆棧和一些Reflectoring(進入ASP.NET 2 - 我沒有1.1好用) - 它看起來像SessionStateModule.PollLockedSessionCallback是HttpApplication啓動例程的組成部分。有可能您的應用正在被回收 - 我很確定將事件寫入事件日誌中。

我唯一的其他建議是提琴手或在客戶端上捕獲HTTP流量的東西。

0

這是很老的文章,但人們仍然看着這個解決方案與我上週做的完全一樣。

Like Grengby說雙重事件是主要原因 - 但刪除其中一個並不總是一個選項。至少在我的情況下,我不得不在第三方的應用程序上解決這個問題。

我添加下面的腳本,並修訂了母版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