2012-07-11 22 views
1

我正在使用.aspx頁面和VB.Net後面的代碼在網站上工作。在頁面上我需要一個像一個變量通過後期持久化,但特定於頁面的用戶

Public Shared comments As String() = New String(2) {"", "", ""} 

一個公共共享變量,因爲我需要的「意見」的價值的持久性通過頁面的後背上。至少我認爲讓公共共享是保持持久性的唯一方法,除非你們告訴我我錯了。

但另一方面,我不希望其他使用同一頁面的用戶與其他用戶衝突「評論」數據。我怎樣才能做到這一點?

回答

2

這取決於您需要的持久性級別。

如果你只需要評論在網頁上,直到用戶導航遠離它,用你的頁面的ViewState:

Public Property Comments As String() 
    Get 
     If Me.ViewState("Comments") Is Nothing Then 
      Me.ViewState("Comments") = New String(2) {"", "", ""} 
     End If 
     Return Me.ViewState("Comments") 
    End Get 
    Set(value As String()) 
     Me.ViewState("Comments") = value 
    End Set 
End Property 

如果您想值將持續導航的頁面程,新登陸頁面上試(即初始負載,而不是回發),用你的會話狀態包:

Public Property Comments As String() 
    Get 
     If Me.Session("MyPage_Comments") Is Nothing Then 
      Me.Session("MyPage_Comments") = New String(2) {"", "", ""} 
     End If 
     Return Me.Session("MyPage_Comments") 
    End Get 
    Set(value As String()) 
     Me.Session("MyPage_Comments") = value 
    End Set 
End Property 

如果你想這是堅持,即使在會話過期,但用戶稍後返回,你需要寫一個連接的後臺存儲用戶對他們的評論,比如數據庫,或者 - 我以低得多的熱情說這個 - 寫出來像XML文件一樣,然後在聲明中加載初始頁面加載的值,例如:

Public Sub PageLoad(sender As Object, e As EventArgs) Handles Me.Load 
    If Not Me.IsPostBack 
     ' Read the value from the backing store 
    End If 
End Sub 

但是,在使用後備存儲時,我通常建議使用數據源控件之一以及數據綁定控件(如ListView或GridView)來顯示信息。

相關問題