0

渡された本当にくだらない ASP.net 4.0 プログラムを修正しようとしています。それを書いた人々は、通常のasp.net標準を使用していませんでした。私自身、ASP.net にはかなり慣れていないので、できる限り詳しく学ぼうとしています。いずれにしても、C# コード ビハインドを使用した ASP.Net 4.0 Web フォーム アプリです。

マークアップ自体にコード ビハインド メソッドの呼び出しがあるページを扱っています。このメソッドを呼び出して、detailById を取得できます。このメソッドは、この ID を使用してデータベースにクエリを実行し、コード ビハインドにデータセットを返す Web サービスを呼び出します。このデータがすべて受信されると、画面のテーブルに書き込まれます。この方法は以上です。このページの下部には、さまざまな機能を実行するさまざまなボタンがあります。たとえば、Hello というボタンを 1 つ取り上げてみましょう。このボタンは、detailById メソッドで取得したフィールド (例: ユーザー名) の 1 つにアクセスするだけです。 この変数値をすべてのコード ビハインド メソッドで使用できるようにするにはどうすればよいですか? 以下の考えを検討しました。

  1. このフィールドを取得するために、detailById のようなデータベースを再クエリしますが、これは非常に効率が悪いようです。

  2. ページのクラス レベル変数を作成し、その値を detailById メソッドの Username 変数に設定しました。これはうまくいきませんでした。「こんにちは」ボタンをクリックすると、ユーザー名が表示されませんでした。detialByIdメソッドで取得したのは事実です。

  3. 次に、ポストバックが値の消失の原因である可能性があると考えたので、detailById メソッド内で Username 値を ViewState 変数に格納しました。この変数にアクセスしようとすると、それも null でした。理由がわかりません。

  4. 最後に、detailById メソッドでこの値を Session に入れます。これは機能し、さまざまなコード ビハインド メソッドで値を参照できました。これは、これを行う方法が間違っているように感じます。私は正しいですか?

これを行うための良い/正しい方法は何ですか?

私の質問が明確になったことを願っています。ありがとう。

4

2 に答える 2

0

セッションは良い解決策です。sessionState mode="SQLServer"セッションのパフォーマンスとセキュリティを向上させるために使用できます。参照: http://support.microsoft.com/kb/317604

于 2013-04-24T06:40:47.463 に答える