【解決方法】Response.Redirect メソッドでセッション変数の値を失う


こんにちは、みんな、

ページのリダイレクトに関して 1 つの問題があります。 ここにサンプルコードがあります
1) データベース接続 -> 完了
2) データの挿入 -> 完了
3) セッション変数内に値を追加 -> 完了
4) 成功ページにリダイレクト -> ここで問題が発生します:(

Default1.aspx:

VB
......
Dim success As String = "Success"
......
'btn_Click Event
    Try
        sqlCom.ExecuteNonQuery()
        sqlCon.Close()
        Session("success") = success
        MsgBox(Session("success") 'Msg Prints Properly

        modifyXmlData(filePath); ' Modifies the attribute value
        '1st Approach
        Response.Redirect("default2.aspx", False)
        '2st Approach
        'Server.Execute("default2.aspx", False)
        Catch ex As Exception
        MsgBox("Exception" + ex.Message)
        'lbl_Success.Text = ex.Message
    End Try
End Sub

Protected Sub modifyXmlData(ByVal filepath As String)
        Dim strPath = Server.MapPath(filepath)
        Dim xmlFile = XDocument.Load(strPath)

        xmlFile.<root>.<ListItem>.Where(Function(f) _
                        f.@value = ddl_SelectedValue).@visited = "Yes"
        xmlFile.Save(strPath)
End Sub
VB
defualt2.aspx

inside page_Load()
'MsgBox(System.Web.HttpContext.Current.Session("success")) ' o/p : Empty
Dim success As String = Session("success").toString
MsgBox(success) 'o/p : Empty
End Sub

1番目のアプローチ:レスポンスを使用する
次のページに正しくリダイレ​​クトされますが、セッション値を取得しようとすると
それは常に空を示しています..

2番目のアプローチ:サーバーの使用
セッション値を保持し、リダイレクト時に Default2.aspx の Page_Load イベントを実行しますが、page_load コントロールが破棄されて Default1.aspx (最初のページ) にとどまるため、このオプションを恐れています。

Server.Execute の代わりに Server.Transfer を使用しましたが、例外が発生しました – 「スレッドが中止されています」

ありがとうございます
この問題を修正する方法を教えてください

解決策 1

試す

C#
session["success"]="success";

引用符を使用しない場合、成功は変数と見なされるためです。 これを使用すると、文字列をセッションに直接割り当てることができます。

コメント

タイトルとURLをコピーしました