Можно ли заменить кнопку asp: на HTML-элемент? - PullRequest
5 голосов
/ 23 ноября 2011

Я использую формы asp и хотел узнать, можно ли заменить стандартные кнопки на элементы HTML, стилизованные с использованием CSS.

Моя страница входа использует стандартную кнопку

<asp:Button ID="LoginButton" runat="server" Text="Login" 
    onclick="LoginButton_Click" />

связано с кодом (C #), который выполняет проверку входа в систему.

Я видел несколько приятных кнопок, реализованных с использованием элемента HTML <button> и стилизованных с помощью CSS, которые могут иметь такие функции, как изображения и выделение при наведении курсора. Базовый HTML выглядит так

<button type="submit" class="positive" onclick ="...">
    <img src="/icons/tick.png" alt=""/> 
    Login
</button>

Я видел еще один вопрос, обсуждающий разницу между asp: button и html's button , поэтому я понимаю, что элемент <button> не является заменой, но я хотел бы знать, если asp:button можно заменить и все еще вызывать код LoginButton_Click C # позади?

EDIT:
Хотя я использую ASP, я не возражаю против использования JavaScript на стороне клиента, если это необходимо.

Кнопки, которые я увидел и которые заставили меня задуматься над этим, были найдены здесь: Повторное обнаружение элемента кнопки

РЕДАКТИРОВАТЬ 2: Я попытался ответить из XIII , используя LinkButton элемент управления asp, и это сработало, рендерил кнопку так, как я хотел, и активировал C # при нажатии

<asp:LinkButton ID="LoginBtn" CssClass="button positive"
        OnClick="LoginButton_Click" runat="server">
    <img src="/icons/tick.png" alt=""/> 
    Login
</asp:LinkButton>

Javascript вставлен на страницу (как упомянуто Куртом), что не было проблемой для меня, но может быть для других людей; но так как asp:loginview и другие элементы управления, связанные с аутентификацией форм, уже нуждаются в javascript, я не уверен, что это проблема с решением.

Я решил принять ответ jwiscarson, так как это более чистая реализация и, несмотря на то, что я думал, <button> может быть заменой <asp:button>

.

Ответы [ 5 ]

2 голосов
/ 23 ноября 2011

Ответ на ваш вопрос:

если кнопку asp: можно заменить и при этом вызвать код LoginButton_Click C # позади?

это да. Если у вас есть кнопка вроде:

<button type="submit" id="submit" class="positive" runat="server">Submit</button>

Атрибут, который вам нужно установить, это не onclick, а onserverclick. Вы также можете сделать что-то вроде:

protected override OnInit(EventArgs e)
{
    submit.ServerClick += new EventHandler(submit_ServerClick);
}

Если вам нужно стилизовать эту кнопку, я думаю, что лучший способ справиться с ней - использовать CSS-классы, как в вашем примере.

1 голос
/ 23 ноября 2011

Альтернативным подходом было бы использование элемента управления LinkButton и стиля, полностью соответствующего CSS. Раньше мы делали это для определенного проекта. Получилось неплохо для нашего клиента.

Интересующее свойство, если CssClass

1 голос
/ 23 ноября 2011

Вы можете установить CSS класс через cssClass свойство <asp:Button/>.Однако вы можете установить атрибуты runat="server" и onserverclick="LoginButton_Click" на <button/>.

0 голосов
/ 23 ноября 2011

Как уже было опубликовано здесь, вы можете стилизовать HTML-код, отображаемый вашим asp:button, или использовать другой элемент управления asp. Ваш asp:button будет отображен как <input type="submit"> с возможно более ограниченными параметрами CSS, чем тег <button>.

Из некоторых поисковиков я думаю, что можно получить обработанный тег <button>, но он выглядит как нетривиальное упражнение, см. Как использовать тег кнопки с ASP.NET?

0 голосов
/ 23 ноября 2011

Вы можете использовать кнопку HTML, если хотите, и научиться вызывать метод __doPostBack() с правильными аргументами. Кнопки Asp.Net и кнопки HTML практически одинаковы в том, как они отображаются в клиенте.

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