【发布时间】:2014-09-07 01:39:22
【问题描述】:
这是我第一次尝试创建自定义 ASP.NET 控件,我几乎已经破解了它,但我遇到了最后的障碍。
我创建了一个继承自 Button 类的自定义控件。我已经覆盖了 Render 方法,因为我想为按钮添加样式,这显然是在按钮的父标记中,因此排除了使用 RenderContent 或 RenderChildren (据我所知)。这部分一切都很完美。
问题在于,在重写 Render 方法时,我显然省略了默认 Render 方法中的一些内容,它允许我编写的 OnClick 方法中的代码被触发。如果我只是注释掉我重写的 Render 方法并构建解决方案,那么按钮就可以完美地工作(除了样式)。我曾尝试在我的重写 Render 方法中包含 MyBase.Render(writer),但这似乎更混乱,更像是我的 Render 方法中的代码在 RenderContent 方法中。
所以,我可以让按钮看起来完全符合我的要求但无法正常工作,或者功能完美但看起来有问题。拼图中缺少的部分是什么?我重写的 Render 方法缺少什么,如下所示:
Protected Overrides Sub Render(writer As HtmlTextWriter)
Dim cssclass As String
If ToggledOn = True Then
cssclass = ToggledOnCssClass
Else
cssclass = ToggledOffCssClass
End If
writer.AddAttribute(HtmlTextWriterAttribute.Class, cssclass)
writer.RenderBeginTag(HtmlTextWriterTag.Button)
writer.Write(ToggledOn.ToString)
writer.RenderEndTag()
End Sub
【问题讨论】:
标签: asp.net custom-controls overriding