Как я могу использовать кнопку тег с ASP.NET ?

я хочу использовать новые <button> тег в ASP.NET сайт, который, среди прочего, позволяет CSS-стиль, текст и встраивание графических внутри кнопки. Asp:Кнопки управления отображается как <input type="button">, есть ли какой-нибудь способ сделать существующий контроль делают <button>?

Из того, что я читал, есть несовместимость с IE размещения кнопки разметки вместо значения атрибута, если кнопка находится в <form>, но в ASP.NET это будет с помощью события onclick для огонь __doPostBack в любом случае, так что я не думаю, что это будет проблемой.

существуют ли какие-либо причины, почему я не должен использовать это? Если нет, то как бы вы идете по поводу его поддержки с asp:Кнопки, или новый сервер управления на его основе? Я бы предпочел, чтобы не написать свой собственный управления сервером, если этого можно избежать.


первый <button runat="server"> решение работает, но я сразу же побежала в ситуации, когда ему необходимо иметь CommandName имущество, которым HtmlButton управления не имеет. Похоже, что я собираюсь необходимость создания управления, унаследованной от Кнопку в конце концов.

Что мне нужно сделать для того, чтобы переопределить метод render и сделать его представить то, что я хочу?


ОБНОВЛЕНИЕ

DanHerbert ответ заставил меня заинтересованы в поиске решения этого снова, поэтому я потратил некоторое время на ней работают.

во-Первых, существует гораздо более простой способ перегрузки TagName:

public ModernButton() : base(HtmlTextWriterTag.Button)
{
}

проблема с Дэном решение в ее нынешнем виде innerhtml тег помещается в свойство значения, что вызывает ошибки проверки на обратной передачи. Сопутствующей проблемой является, даже если вы предоставляете значение свойства корректно, Т.Е. в braindead реализации <button> тег должности innerhtml вместо значения в любом случае. Так, любая реализация этого необходимо переопределить AddAttributesToRender метод для правильного отображения стоимости имущества, а также обеспечить хоть какие-то временное решение для IE, чтобы он не полностью винт до отправки.

Т.Е. проблема может быть непреодолимыми, если вы хотите воспользоваться CommandName/CommandArgument свойства связанные с данными контроля. Надеюсь, кто-нибудь может предложить решение для этой проблемы.

я достигли прогресса на рендеринг:

ModernButton.cs

как Это делает правильный html <button> правильное значение, но она не работает с ASP.Net Обратной передачи системы. Я написал то, что мне нужно предоставить Command событие, но оно не стреляет.

При осмотре эту кнопку, бок о бок с регулярной asp:Кнопки, все они выглядят одинаково других, чем различий, что мне нужно. Поэтому я не уверен, как ASP.Net проводка до Command события в этом случае.

дополнительную проблему, вложенных элементов управления сервера не представляется (как вы можете видеть, с ParseChildren(false) атрибут). Это довольно легко внедрить буквального текста html в контроле во время рендеринга, но как ты позволила поддержка вложенных элементов управления сервера?

Найдено 8 ответов:

How can I use the button tag with ASP.NET?

http://stackoverflow.com/questions/187482/how-can-i-use-the-button-tag-with-asp-net

Посмотреть решение →