【发布时间】:2022-01-27 07:51:12
【问题描述】:
我正在编写一个 ASP.NET 自定义复合控件(继承 System.Web.UI.WebControls.CompositeControl)。
默认情况下,我的控件标记呈现被标签包围。我知道我可以覆盖属性 TagKey 以将返回设置为我想要的 System.Web.UI.HtmlTextWriterTag 枚举中的任何标签。
我的问题:我可以在没有 .NET 的情况下渲染我的控件吗?
更新(2011 年 3 月 2 日)感谢斯瓦蒂的回答。我想展示我现在是如何解决我的问题的。我想我会整合斯瓦蒂的一些想法。具体来说,AddAttributestoRender(),但我想知道是否需要这样做,因为 CompositeControl 将缺少一个父标记标签来保存属性。
当我不想要包含标记标签时,我会覆盖 CompositeControl 中的一个属性和两个方法。
Protected Overrides ReadOnly Property TagKey() As System.Web.UI.HtmlTextWriterTag
Get
' System defaults return as HtmlTextWriterTag.Span
Return HtmlTextWriterTag.Unknown
End Get
End Property
Public Overrides Sub RenderBeginTag(ByVal writer As System.Web.UI.HtmlTextWriter)
If Me.TagKey <> HtmlTextWriterTag.Unknown Then
MyBase.RenderBeginTag(writer)
End If
End Sub
Public Overrides Sub RenderEndTag(ByVal writer As System.Web.UI.HtmlTextWriter)
If Me.TagKey <> HtmlTextWriterTag.Unknown Then
MyBase.RenderBeginTag(writer)
End If
End Sub
【问题讨论】: