Кнопка ASP.NET и переопределение события рендеринга - PullRequest
2 голосов
/ 11 октября 2011

Во-первых, может, кто-нибудь проявит любезность и прокомментирует, почему 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

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Элемент Button имеет некоторые причуды при использовании в разных браузерах, особенно в отношении отправляемых данных.Microsoft, скорее всего, решила использовать входные данные для большей согласованности между реализациями браузера.

1 голос
/ 11 октября 2011

Понятия не имею о решении Microsoft, но для TagKey вам просто нужно переопределить свойство TagKey и вернуть HtmlTextWriterTag.Button. Вы также захотите переопределить метод AddAttributesToRender и не вызывать базовый метод, чтобы он не выводил атрибут type="button".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...