我正在开发一个网站,其中.aspx页面和代码隐藏在VB.Net中。在页面上,我需要一个像
这样的公共共享变量Public Shared comments As String() = New String(2) {"", "", ""}
因为我需要通过页面的帖子支持“评论”的持久性。至少我认为让它公开共享是保持持久性的唯一方法,除非你们告诉我我错了。
但另一方面,我不希望可能使用同一页面的其他用户与其他用户冲突他们的“评论”数据。我怎样才能做到这一点?
答案 0 :(得分: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)来显示信息。