Во-первых, может, кто-нибудь проявит любезность и прокомментирует, почему Microsoft решила сделать так, чтобы элемент управления ASP.NET отображал тег <input type='button' />
вместо тега <button />
?В результате этого я столкнулся с рядом проблем (особенно при создании кнопок jQuery без текста и просто значков).
Во-вторых, я пытаюсь создать свой собственный вывод кнопки, переопределив событие Render()
и я испытываю некоторые трудности, пытаясь понять, как изменить выходную информацию, предоставляемую этим событием.
Если я посмотрю на HtmlTextWriter
, предоставленную в качестве параметра для события Render()
Я вижу, что он содержит защищенное свойство TagKey = Input {47}
. Можно ли как-то просто изменить это свойство и изменить его на Button или мне нужно создать новый экземпляр HtmlTextWriter и заполнить его все с самого начала?Если да, может ли кто-нибудь дать некоторые рекомендации относительно того, как это обычно делается, и если есть какие-то особые соображения, которые мне нужно сделать, чтобы убедиться, что мой производный класс кнопок функционально эквивалентен оригиналу (исключая HTML)?
<Assembly: TagPrefix("MyCompany", "MyCustomButton")>
Public Class MyButton
Inherits Button
Protected Overrides Sub OnPreRender(e As System.EventArgs)
MyBase.OnPreRender(e)
End Sub
Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
'writer.TagKey = Input {47}
MyBase.Render(writer)
End Sub
End Class