【发布时间】:2010-01-11 13:07:25
【问题描述】:
我在设计视图中遇到了自定义面板控件的问题。覆盖渲染方法在设计时没有影响。
如果我按如下方式扩展文本框,则设计时会显示 div 标记,然后显示文本框控件。对面板控件进行了同样的尝试,但它没有显示带有此处文本的 div。似乎因为面板是一个容器控件,它在设计视图中的工作方式不同。真令人沮丧。关于如何让我的设计时间以我想要的方式呈现的任何想法?
Public Class textboxextend
Inherits TextBox
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.RenderBeginTag("div")
writer.Write("here")
writer.RenderEndTag()
MyBase.Render(writer)
End Sub
End Class
Public Class panelextend
Inherits Panel
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.RenderBeginTag("div")
writer.Write("here")
writer.RenderEndTag()
MyBase.Render(writer)
End Sub
End Class
【问题讨论】:
-
仅供参考,尝试调试扩展的 Panel 类,当在设计时添加组件时,它不会触发任何常见事件(RenderControl、Render、RenderChildren、RenderContents、CreateChildControls、OnLoad 或 OnPreRender)。 .. 但是它确实调用了 OnInit,这无济于事,因为所有控件都已创建并在 New() 处添加到 Panel 的 Controls 集合中。这似乎只影响扩展 Panel 类,在扩展 TextBox 或 TreeView 时工作正常类等...换句话说,我也在寻找答案:(
标签: asp.net custom-server-controls