質問: C#、ASP.NETで画面を開発しています。 タイトルの件、Page_Initで検索したマスタデータをPageクラスを継承したクラス変数に一時保存し、何かボタンを押したタイミングで一時保存したデータを参照すると、一時保存したデータがクラス変数を宣言した際の初期値に初期化されてしまいます。 これは、ASP.NETの仕様でしょうか? また、Page_Initで検索したデータをその後のイベントで使いまわしたい場合は、ビューステートやセッションに保存するのが一般的でしょうか? よろしくお願い致します。
回答: 仕様です。最初にPageインスタンスが生成され、ポストバック時には最初のインスタンスのメソッドが呼ばれるわけではありません。仮にこの方式にしてしまうと、Webブラウザー側でウィンドウを複製しそれぞれのウィンドウが異なるリクエストを送信した場合にサーバー側の状態が破綻します。 Webブラウザーからリクエストがある度にPageインスタンスが再作成される仕様となっています。