我必须获取并设置当前页面的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值
答案 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();