2009-07-19 13 views
0

私はページに複数のUpdatePanelを持っていますが、どちらも高価なコントロールで埋められています。非同期ポストバックでは、すべてのUpdatePanelが初期化されますが、UpdatePanelだけがクライアントに送信されます。今私は実際に更新が必要なUpdatePanelのみを初期化したいと思います。__eventtargetをScriptManager idに設定

http://ryanfarley.com/blog/archive/2005/03/11/1886.aspxは、__EVENTTARGETパラメータをデコードして、ポストバックを引き起こしたコントロールを見つけることを提案しています。 forums.asp.net/p/1385862/2947336.aspxは、ScriptManager固有IDに対応するRequest.Form値のデコードを提案します。どちらもうまくいくようです。ただし、本番システム(IIS 6、.NET 3.5)では、__EVENTTARGETがScriptManagerの一意のID(MyScriptManager)に設定されている要求が頻繁に報告されます。これらの場合、ScriptManagerパラメータもにデコードされます。MyScriptManager | の代わりに MyScriptManager UpdatePanelId | イベントターゲットID

Firefox 3.0および3.5、およびIE 6,7および8については、それが確認されています。ただし、再現できませんでした。クライアントのブラウザがこれらの値を返信する原因は何ですか?

答えて

0

ASP.NET AJAX履歴状態が要求のこの種の原因となります。クライアントがWebアプリケーションを使用する場合、ScriptManagerでEnableHistory = "true"を使用して部分ページの更新を追跡します。クライアントがブラウザの戻るボタンをクリックすると、ScriptManagerはEventTargetとして自身を使用して非同期要求を開始します。

0

updatepanelのupdatemodeを「条件付き」に設定しようとしましたか?私はこれがあなたの問題を解決すると思います。ここ

詳細情報:http://codeclimber.net.nz/archive/2007/05/24/updatemode-default-value-for-the-updatepanel-is-always.aspx

+0

私は既にUpdateMode.Conditionalを使用しています。ただし、これには2つの影響しかないようです:更新された更新パネルのコンテンツのみがブラウザに送信され、保護されたプロパティUpdatePanel.RequiresUpdateはOnPreRenderイベントの前に初期化されます。しかし、UpdatePanelの子コントロールを作成する必要はありません(OnInit/OnLoad)。したがって、後でどの更新パネルが更新を必要とするかを予測しようとします。 –

関連する問題