渡された本当にくだらない ASP.net 4.0 プログラムを修正しようとしています。それを書いた人々は、通常のasp.net標準を使用していませんでした。私自身、ASP.net にはかなり慣れていないので、できる限り詳しく学ぼうとしています。いずれにしても、C# コード ビハインドを使用した ASP.Net 4.0 Web フォーム アプリです。
マークアップ自体にコード ビハインド メソッドの呼び出しがあるページを扱っています。このメソッドを呼び出して、detailById を取得できます。このメソッドは、この ID を使用してデータベースにクエリを実行し、コード ビハインドにデータセットを返す Web サービスを呼び出します。このデータがすべて受信されると、画面のテーブルに書き込まれます。この方法は以上です。このページの下部には、さまざまな機能を実行するさまざまなボタンがあります。たとえば、Hello というボタンを 1 つ取り上げてみましょう。このボタンは、detailById メソッドで取得したフィールド (例: ユーザー名) の 1 つにアクセスするだけです。 この変数値をすべてのコード ビハインド メソッドで使用できるようにするにはどうすればよいですか? 以下の考えを検討しました。
このフィールドを取得するために、detailById のようなデータベースを再クエリしますが、これは非常に効率が悪いようです。
ページのクラス レベル変数を作成し、その値を detailById メソッドの Username 変数に設定しました。これはうまくいきませんでした。「こんにちは」ボタンをクリックすると、ユーザー名が表示されませんでした。detialByIdメソッドで取得したのは事実です。
次に、ポストバックが値の消失の原因である可能性があると考えたので、detailById メソッド内で Username 値を ViewState 変数に格納しました。この変数にアクセスしようとすると、それも null でした。理由がわかりません。
最後に、detailById メソッドでこの値を Session に入れます。これは機能し、さまざまなコード ビハインド メソッドで値を参照できました。これは、これを行う方法が間違っているように感じます。私は正しいですか?
これを行うための良い/正しい方法は何ですか?
私の質問が明確になったことを願っています。ありがとう。