在PostBack上清除属性值

时间:2014-02-07 06:38:00

标签: asp.net vb.net

我必须获取并设置当前页面的BackColur。因此,用户可以从任何其他页面使用此属性

这是我的代码

  Private _BackgroundColour As System.Drawing.Color
  Public Property MenuBackColour() As System.Drawing.Color
     Get
       Return _BackgroundColour
     End Get
     Set(ByVal value As System.Drawing.Color)
       _BackgroundColour = value
     End Set
  End Property

  Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
  Try
    NavigationMenu.BackColor = MenuBackColour
  Catch ex As Exception                 
  End Try
  End Sub

但问题是在PostBack上清除了属性值,所以我无法从其他页面获取BackColor值

3 个答案:

答案 0 :(得分:2)

在回帖后,只发布输入元素。

所以他们和回帖之前是一样的,他们在回帖之前就有了,现在和现在。所以实际上你不会在后面的代码上“获取”这些参数,你只需“设置”它们,并且在viewstate on的服务器控件上,你可以记住post-back上的这些参数 - 但你不能在客户端更改它们并期望阅读服务器上的这一变化。

这里的解决方法是。要么使用页面的视图状态来保存一些值并将它们保留在回发后,以太使用输入隐藏的元素来将它们放回到帖子后面。

答案 1 :(得分:1)

如果您的主要目的是保留或共享不同页面之间某些控件的背景颜色,那么在ASP.NET中有很多方法可以实现。您可以将值保留在cookie或会话中,也可以缓存。

根据请求,如果必须使用Property,我会创建一个Default.aspx,如下所示:

Public Class _Default
    Inherits Page

    Private Shared _BackgroundColour As System.Drawing.Color = Drawing.Color.Azure
    Public Shared Property MenuBackColour() As System.Drawing.Color
        Get
            Return _BackgroundColour
        End Get
        Set(ByVal value As System.Drawing.Color)
            _BackgroundColour = value
        End Set
    End Property

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        MenuBackColour = Drawing.Color.Red
        Response.Redirect("Default1")
    End Sub
End Class

它会自动重定向到Default1.aspx,该页面中有一个Label控件。它将使用_Default.MenuBackColour作为标签的背景颜色:

Public Class Default1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.BackColor = _Default.MenuBackColour
    End Sub

End Class

同样,不推荐这种方法。如果从未运行过Default.aspx(至少一次),则MenuBackColour的值可能不是您认为的那样。我不会鼓励人们在.aspx页面中保留任何静态变量或属性以进行共享。

答案 2 :(得分:1)

在Web应用程序中,变量值只会被删除。但坚持这些价值观非常简单。它们可以使用 Viewstate 对象保留。在调用回发之前,变量的值保存在viewstate对象中。在接收页面中,可以检索到视图状态的值。

//在PostBack

之前保存ViewState对象中的值
ViewState("myColour")="Black";

//在PostBack

之后从ViewState中返回值
myColourProperty=ViewState("myColour").ToString();