- PR -

ブラウザの更新ボタンと変数の引継ぎ

1
投稿者投稿内容
ペンギン
常連さん
会議室デビュー日: 2003/11/06
投稿数: 39
投稿日時: 2003-11-26 11:08
いつもお世話になっております。ASP.NET(VB)暦1ヶ月の初心者です。

現在開発中のWebアプリで、ページの遷移時に以下のようにして
値の受け渡しを行っております。(Server.Transferとか
手もあるのですが、フレームとのからみがあるので)

******

Private Sub hoge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hoge.Click

Session("hoge") = "hoge"
Response.Redirect("hoge2.aspx")

End Sub

******

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

viewstate("hoge2") = Cstr(Session("hoge"))
Session.Remove("hoge")

End Sub

******

普通に画面遷移するにはまったく問題がないのですが、
「ブラウザで更新したらどうなるだろう」と思って
更新したら、Session("hoge")を破棄しているので
当然Nothingを戻され、後の処理でエラーが発生しました。
ここでPage_Load側を

******
If Not (Session("hoge") Is Nothing) Then
viewstate("hoge2") = CStr(Session("hoge"))
Session.Remove("hoge")
End If
******

とすれば回避できるかと考えたのですが、今度は
viewstate("hoge2")がNothingで、他の処理で
エラーになってしまいます。
ポストバックしていないので当然といえば
当然だとは思いますが、更新前の値を引き継ぐには
どうしたらいいのか行き詰まってしまいました。
Sessionに関して管理上「フォーム間の受け渡しが終了したら
必ず破棄する」ことを原則としたいので、Sessionを
破棄するコードは残しておきたいです。

ブラウザの更新ボタンクリック時にviewStateまたは
その他の変数を引き継ぐには、どのようにしたら
よいのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)