【发布时间】:2015-09-09 19:24:49
【问题描述】:
环境:Asp.net 4.5,Webforms
我正在创建一个复合控件。我已经暴露了多个公共属性,但遇到了一个小问题。
假设我有两个属性:
Public Property Path() As String
Get
Return ViewState("Path")
End Get
Set(ByVal Value As String)
If UseAbsolute = True Then
' do something
Else
' it always lands heere...
End If
End If
ViewState("Path") = Value
End Set
End Property
Private _Path As String = String.Empty
Public Property UseAbsolute() As Boolean
....
End Property
Private _UseAbsolute As Boolean = False
我的控件在 PreRender 上被赋值。问题是,当我调用“路径”时,它会获取 UseAbsolute 的默认/私有值。因此,即使我在控件/html 中将属性设置为 True,它也会先获取 false。
我可以通过多种方式解决这个问题,但我觉得我缺少正确的方法或理解。
更新
我忘了提。我是:
EnsureChildControls()
在预渲染中...
我也尝试将其添加到属性本身。
【问题讨论】:
-
我也想知道是否有解决方案。您可能的解决方法之一是我正在做的事情——我的属性只是 getter 和 setter。我正在处理
CreateChildControls()内部的所有逻辑 -
@onskee 给我点赞?也许天才会出现,让我们觉得很傻。
-
我认为如果其中一个属性可用,那么所有属性都是可用的。
标签: asp.net vb.net composite-controls