質問

ASP.NET 1.1 アプリケーションがあり、別の値 (親子関係) を埋めるために使用される ComboBox を変更すると、2 つのポストバックが生成される理由を調べようとしています。

コードを何度も確認しましたが、原因が見つかりません。

ここでは、page_load で終わる両方の呼び出しスタックを示します。

最初のポストバック (ComboBox の自動ポストバックによって生成される)

ポストバック コール スタック http://www.juanformoso.com.ar/images/callstack1.jpg

2 番目のポストバック (これが原因を調べたいものです)

代替テキスト http://www.juanformoso.com.ar/images/callstack2.jpg

なにか提案を?何を確認できますか?

役に立ちましたか?

解決

これはこのコードの非常に特殊な問題なので、他の人にとって役立つとは思えませんが、次のようになります。

コンボにチェックが追加されました onchange if を使用すると、条件が満たされた場合、ポストバック関数への明示的な呼び出しが行われます。コンボが設定されていた場合 AutoPostback, 、asp.net はポストバック呼び出しを再度追加し、2 つのポストバックを生成しました...

生成されたhtmlはこんな感じでした。

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

他のヒント

まず最初に探すのは、2 番目の ComboBox の AutoPostBack プロパティが true に設定されていないことです。そのプロパティを true に設定して 2 番目のコンボの値を変更すると、そのコントロールでポストバックが生成されると思います。

共有できるコードはありますか?当時、クラシック ASP ではダブル ポスト バックに非常に悩まされていたため、最終的に .NET にきっぱり切り替えるきっかけとなりました。.NET でこのような問題が発生したときは、ロード、初期化、事前レンダリング、クリック、SelectedIndexChanged などのすべての CONTROL 要素とすべての PAGE 要素にアクセスして、ブレークポイントを設定します。

そこにコードがない場合でも、次のようなものを挿入します。

Dim i As Integer
i = 0

通常、予期していなかったアクションを特定し、必要に応じて修正することができます。ここでそれを行うことをお勧めします。

幸運を。

Request.Form["__EVENTTARGET"] をチェックして、ポストバックを開始するコントロールを見つけます。これは、コントロールを絞り込むのに役立つ場合があります。

コールスタックといくつかのリフレクタリング (ASP.NET 2 へ - 1.1 は手元にありません) を見ると、SessionStateModule.PollLockedSessionCallback が HttpApplication スタートアップ ルーチンの一部であるようです。アプリがリサイクルされている可能性があります。そのためのイベントがイベント ログに書き込まれていると確信しています。

私の唯一の提案は、クライアント上で HTTP トラフィックをキャプチャするための Fiddler か何かです。

これは非常に古い投稿ですが、先週私が行ったのとまったく同じように、解決策を求めて人々がまだこれを探しています。

Grengby 氏が述べたように、二重イベントが主な理由ですが、それらの 1 つを削除することが常に選択肢になるわけではありません。少なくとも私の場合は、サードパーティのアプリケーションでこれを解決する必要がありました。

次のスクリプトを追加し、マスターページの 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top