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

хотел бы использовать более новый тег на веб-сайте ASP.NET, который, помимо прочего, позволяет вводить текст в стиле CSS и вставлять графику внутри кнопки. Элемент управления asp: Button отображается какЕсть ли способ сделать ранее существующий элемент управления для рендеринга?

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

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

Сначала Решение сработало, но я сразу же натолкнулся на ситуацию, когда ему нужно иметь свойство CommandName, которого нет в элементе управления HtmlButton.есть Похоже, яВ конце концов мне нужно будет создать элемент управления, унаследованный от Button.

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

ОБНОВИТЬ

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

Во-первых, естьЭто гораздо более простой способ перегрузить TagName:

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

Проблема с даньРешение в том виде, в каком оно есть, заключено в том, что innerhtml тега помещается в свойство value, что вызывает ошибку проверки при обратной передаче. Связанная проблема, даже если вы правильно отображаете свойство value, IE 'Мозговая реализация тег отправляет innerhtml вместо значения в любом случае. Таким образом, любая реализация этого должна переопределить метод AddAttributesToRender, чтобы правильно отобразить свойство value, а также предоставить какой-то обходной путь для IE, чтобы он нет полностью испортить обратную передачу.

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

Я сделал успехи в рендеринге:

ModernButton.cs

Это делает как правильный HTML с правильным значением, но это неработать с системой ASP.Net PostBack. Я'я написал кое-что из того, что мне нужноCommand событие, но это не такт огонь.

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

Дополнительная проблема заключается в том, что вложенные элементы управления сервером неt отображается (как вы можете видеть с атрибутом ParseChildren (false)). Это'Довольно просто внедрить буквенный HTML-текст в элемент управления во время рендеринга, но как разрешить поддержку вложенных серверных элементов управления?

Ответы на вопрос(7)

Ваш ответ на вопрос