• 締切済み

ASP.NET

お世話になります。ASP.NET初心者です。 つい、一週間ほど前から、ASP.NETでのシステム開発をしているのですが、わからない点があり質問させて頂きました。 環境 ASP.NET(今は、ローカルのIISを使用しています。)    DB Oracle10g 質問内容:画面上で入力された値をキーとしてDBから値を取得し、 画面に表示するのですが、その取得してきたデータのKey値をどこかに保存しておいて、更新(UPDATE)するときに使用したいと思うのですが、どのような方法があるのでしょうか?画面の隠しコントロールなどに退避したりするのでしょうか? 以上 よろしくお願いします。  

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

> Privateの変数に保持すればいいかと思ったのですが プロパティにして、ViewStateで値を保持するのがお勧めです。 public int myKey { get{ return (int)ViewState["myKey"]; } set{ ViewState["myKey"] = value; }

参考URL:
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp03/entwebapp03_02.html
  • eyesea
  • ベストアンサー率27% (15/55)
回答No.3

> DBから取得してきたデータをPrivateの変数に保持 とのことですが、同じプログラム内で更新していますか? 通常は別のASPプログラムでDBのUpdateを行なうと思うのですが、そうした場合は当然のことながら変数はクリアされます。(別のプログラムですから) redfox63さんがおっしゃっているようにWebは「要求~送信」の1セットで一旦完了してしまうので、プログラム内の変数に入れておくこと自体が無意味になります。 一番手っ取り早いのがセッション変数なので、解説本などで調べてみてください。 あくまでもセッションが切れるまでなので、ブラウザを閉じたり長時間放置しておくとリセットされてしまいますが・・・。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

遷移間の時間が短くてすむのであればセッションでやる方が多いと思います 自分自身(Page)の中で覚えておきたいなら隠しコントロール(HiddenField)のVisibleプロパティをFalseに設定しておいてこのValueプロパティに設定すると言った手法もあります Webアプリはページを要求されて構築し送信が終わった時点で破棄されますのでグローバル変数をページクラスなどに作成してここにデータを保存しても意味がありません

  • eyesea
  • ベストアンサー率27% (15/55)
回答No.1

質問の状況が今ひとつわからないのですが・・・。 「取得してきたデータのKey値」というのは、「画面上で入力された値」のことですか? だとすると、「更新(UPDATE)するときに使用したい」というのは、「入力された画面とは違う画面に遷移しても使用できるように保持したい」という意味でしょうか? 上記2点が合っているのなら、Session変数を利用すればよいと思います。 Session変数は、セッションが切断されなければ保持されますので、画面を遷移しても値がキープされます。 ※私は少し古いASPをいじっていてASP.NETは触ったことが無いので、もしかすると今はもっと良い方法があるのかもしれません。

h-japon
質問者

お礼

回答ありがとうございます。 取得してきたKey値というのはDBから取得してきた値なのですが、 画面上には表示していない項目です。なので、DBから取得してきたデータをPrivateの変数に保持すればいいかと思ったのですが、 更新をしようとしたときにはなぜか変数が初期化されてしまっていて・・・Web系の開発自体がはじめてなのでつかぬ質問ですみません。

関連するQ&A