|
■No102167 (伝説のカレー さん) に返信
撤退すると言いながら何ですが、気になったので一言・・・
> ぬー不思議な事象ですね
それは不思議では無くて当たり前かと。
サーバー側で起こることとクライアント側で起こることの区別、その順序が理解 されてなくて、以下のようなことを考えていると思います。
protected void btnXXX_Click(object sender, EventArgs e) { (1) RegisterStartupScript 登録するスクリプトの内容は: ・JavaScript で子画面を表示 ・子画面でポストバックして Session を設定
(2) 後続処理 上の子画面での Session の設定が終わったら 続いて Session の内容を見て後続処理を行う }
そんなことはできません。
親画面のボタンクリックでポストバックされ、サーバー側で btnXXX_Click が動き、 (1), (2) のコード(及びその他のサーバー側での全ての処理)が終わってから応答 がブラウザに返ってきてスクリプトが登録され、初めて上の「JavaScript で子画面 を表示」となります。
その時点では (2) は終わってます。つまり (1) に書いた「子画面でポストバック して Session を設定」は (2) の後の話なので、当然 (2) では Session は取得で きません。
質問者さんが言う、
> 同じイベントを走らせると、先ほど見えなかった情報(セッション変数、DB共) > が嘘のように見えるようになっています。
というのは、(1) で起動した子画面で Session 設定後、親画面でもう一度ボタン クリックしてポストバックし、btnXXX_Click を動かしたということでしょうが、 その時点ではすでに Session は設定済みなので、「嘘のように見える」というこ とになったのでしょう。
|