在類別中讀取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傳出,並顯示在畫面上。
不過在細想一下,如果一開始就去按第二個按鈕,這時候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的話,就給空字串。
這樣運作起來就不會有問題囉
^_^
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |