2011-02-02 18 views
1

カスタムコントロールのHttpContextとOnInitイベントで、いくつかのチェックが必要な方法で応答していないことを認識した後、掘り下げています。ASP.Net Control.OnIntとHttpContext

現在のコンテキストのアイテムコレクション内に、すべてのポストバックで1回質問したいオブジェクトを(シリアル化して)保存します。最初にコントロールがレンダリングされ、items []はnullになります。次に、行の下のどこかに値が設定され、ユーザーはデータをポストバックするためにボタンをクリックします。

ここで、ボタン提出イベント内でアイテム[キー]をnullに設定して、ポストバックで私は何も格納されていないが、常に値を含んでいることを確認します。

私は、OnInitハンドラが以前の状態への参照を持っていると仮定しているので、items []に値が含まれていると仮定していると誤っています。これはOnInitの仕組みと関連しているのですか、もっと大きな画像が欠けていますか?

おかげで、 エリック

答えて

0

Itemsは、要求間で永続化されていません。最初の要求からポストバック要求までは、クライアントとサーバーの間の2つの別々の要求ライフサイクルと、Itemsの2つの別々のインスタンスを表します。要求にまたがってデータを永続化するには、Session、Cache、またはViewStateを使用する必要があります。

+0

しかしそれは意味をなさない。 items [key] = objectユーザーがログインしたときにユーザーがアプリケーションを継続し、変更をプロファイルに送信することを決定した場合など、item []は2つの異なる要求の間に保持されます。サブミット時に変更を保存し、items [key] = nullにする必要があります。しかし、ポストバックでは、items [key] = objectで、nullではない、つまり、items []は永続化されますか? – JadedEric

+0

私は自分自身がキャッシュオブジェクトを好み、サードパーティのコードを修正する必要があります: '(。 – JadedEric

関連する問題