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

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

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

首先是畫面安排:Default.aspx

接著是撰寫一個類別來處理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傳出,並顯示在畫面上。

在類別中讀取Session的內容

不過在細想一下,如果一開始就去按第二個按鈕,這時候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的話,就給空字串。

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

^_^

相关文章: