DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NET データを保持した双方向の画面遷移について

環境/言語:[環境WinXP,使用言語VB.NET,NET Frameworkバージョン1.1]
分類:[.NET]

入力画面と確認画面の二画面を用意しました。
まずは入力画面のフォーム内容を確認画面で表示させ、
かつ確認画面から入力画面に戻るときにフォームの内容を残しておきたいのです。
しかし、Applicationオブジェクトを使用して値の共有をしようとすると、
入力画面のフォーム内容が確認画面に表示されなくなってしまいます。
なにとぞアドバイスをお願いします。
以下がコードとなります。

■入力画面
rivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。
Dim strName As String
strName = CType(Application("name"), String)
TextBox1.Text = strName
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strName As String
strName = TextBox1.Text
Application("name") = strName

'入力確認画面に遷移
Response.Redirect("WebForm1.aspx")
End Sub

■確認画面
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。

Dim strName As String
strName = CType(Application("name"), String)

'値をラベルに表示
Label1.Text = strName

'値を隠し項目に表示
TextBox1.Text = strName
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'結果画面に遷移
Response.Redirect("WebForm3.aspx")
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim strName As String = TextBox1.Text
Application("name") = strName

'入力画面に遷移
Response.Redirect("WebForm1.aspx")
End Sub
投稿者ですが、デバッグすることにより不具合の原因が分かりました。
まずボタンを押下したときにPage_Loadが走るために入力内容が空に書き換えられてしまい、その値をもって次画面に遷移していました。
これの解決策としてPage_Loadの項にIf文によってnull判定をし、条件分岐させました。
コードは以下になります。

■入力画面
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。

Dim strName As String
Dim strAdr As String
Dim strTel As String

If TextBox1.Text = Nothing Then
strName = CType(Application("name"), String)
strAdr = Application("address")
strTel = Application("tel")

TextBox1.Text = strName
TextBox2.Text = strAdr
TextBox3.Text = strTel
End If

End Sub

しかし、ボタンを押下したときには必ずPage_Loadが走ってしまうのでしょうか?
もう少しまともな記述をしたいのですが、何かよい方法がありましたらご教授お願いいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板