在類別中讀取Session的內容

在類別中讀取Session的內容

有個網友剛好提到這個問題,小喵於是做了個小小的測試,測試的過程如下:

首先小喵在畫面中安排一個TextBox,一個按鈕,當按鈕按下後,將TextBox中的內容放入Session中

接著在安排另外一個按鈕,希望按下按鈕後,可以從一個類別把他的屬性(Property)取出,這個屬性(Property)的內容是從Session中取得。於是程式碼如下:

首先是畫面安排:Default.aspx

 


        <asp:TextBox ID="txtIn" runat="server"></asp:TextBox>
        <asp:Button ID="btn1" runat="server" Text="取得資料放入Session" />
        <br />
        <asp:Button ID="btn2" runat="server" Text="從物件中取得Session放入Label" />
        <br />
        <asp:Label ID="lbl1" runat="server" Text=""></asp:Label>

 

接著是撰寫一個類別來處理objTSession.vb

請記得要【Imports System.Web.HttpContext】才能處理唷


Imports Microsoft.VisualBasic
Imports System.Web.HttpContext

Public Class objTSession
    Private m_SData As String = Current.Session("txt")

    Public ReadOnly Property SData() As String
        Get
            Return "從Class中讀出的Session:" + m_SData.ToString
        End Get
    End Property

End Class

接著處理畫面的CodeFile:Default.aspx.vb


    Protected Sub btn1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn1.Click
        Session("txt") = Me.txtIn.Text
    End Sub

    Protected Sub btn2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn2.Click

        Dim ots As New objTSession
        Me.lbl1.Text = ots.SData

    End Sub

測試結果,當輸入TextBox後將輸入的文字放入Session

然後在Class中確實可以把Session中的內容取出,透過Property傳出,並顯示在畫面上。

ts01

不過在細想一下,如果一開始就去按第二個按鈕,這時候Session是空的,那會發生什麼事呢??

發生了【並未將物件參考設定為物件的執行個體】的錯誤訊息

這原因是因為直接按第二顆按鈕時,Session是不存在的

因此要修改一下Class的內容如下,希望當Session不存在的時候,就放入空字串

修改後的Class【objTSession.vb】


Imports Microsoft.VisualBasic
Imports System.Web.HttpContext

Public Class objTSession
    Private m_SData As String

    Public ReadOnly Property SData() As String
        Get
            Return "從Class中讀出的Session:" + m_SData
        End Get
    End Property

    Public Sub New()
        If Current.Session("txt") IsNot Nothing Then
            m_SData = Current.Session("txt").ToString
        Else
            m_SData = ""
        End If
    End Sub

End Class

我們在New的時候,來處理這樣的動作,判斷Session是否是Nothing,如果有東西就把東西放入,如果是Nothing的話,就給空字串。

這樣運作起來就不會有問題囉

^_^


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat