Подтвердить что ты не робот

Есть ли способ добавить событие onclick в элемент управления сервером Label ASP.NET?

Я хотел сделать что-то вроде этого:

<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>

Я знаю, что в Javascript я могу сделать:

<span onclick="foo();">My Label</span>

Итак, мне интересно, почему я не могу сделать это с помощью объекта Label.

4b9b3361

Ответ 1

Вы можете использовать атрибуты для добавления обратного вызова на стороне клиента onclick.

Я не знал, что вы можете сделать это в тегах span, но если это сработает, вы можете добавить 'onclick' на lblMyLabel.Attributes.Add("onclick", "foo();");

Но foo(); должна быть javascript-функцией на стороне клиента.

System.Web.UI.WebControls.Label НЕ имеет события сервера OnClick. Вы можете изучить использование AJAX, если вы хотите обратный вызов сервера с приведенным выше примером.

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

ASPX:

<asp:LinkButton ID="LinkButton1" runat="server" 
    CssClass="imjusttext" OnClick="LinkButton1_Click">
LinkButton
</asp:LinkButton>

CSS

a.imjusttext{ color: #000000; text-decoration: none; }
a.imjusttext:hover { text-decoration: none; }

Ответ 2

В вашем вопросе не указывается, хотите ли вы повысить событие клика на сервере (VB или С#) или на клиенте (javascript.) Если вы ищете событие на стороне сервера, вы должны использовать кнопку ссылки с css, что делает ссылку отображаемой в качестве метки. Затем вы можете использовать кнопку щелчка на серверной кнопке. Если вы ищете событие клики на стороне клиента - просто введите его в свою разметку управления сервером
asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET выдает дополнительные атрибуты в создаваемой HTML-разметке.

Ответ 3

Вы можете сделать это в коде в page_load, например:

void Page_Load(object sender, EventArgs e) 
{
      lblMyLabel.Attributes.Add("onclick",
           "javascript:alert('ALERT ALERT!!!')");
}

Ответ 4

Я думаю, что вы можете, но это клиентский обработчик onclick, а не сервер. Он будет жаловаться на то, что атрибут не поддерживается (или некоторые из них), но я думаю, что он правильно отображается. Если вы хотите обработчик на стороне сервера, я думаю, вам нужно сделать LinkButton.

Ответ 5

Насколько я знаю, это невозможно. Элемент управления меткой испускает элемент <span > , который является "unclickable" на стороне сервера. Вам нужно будет заменить элемент управления Label на LinkButton.

Ответ 6

Если вы хотите событие onclick, почему бы вам не использовать ссылку, которая имеет событие onclientclick:

<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>

Вы можете использовать CSS, чтобы ссылка выглядела так, как вам хочется.

Ответ 7

Другим взломом будет использование скрытой ссылки или кнопки со стилем = "display: none;" и вызвать щелчок на серверном элементе управления из функции javascript в промежутке.

Что-то вроде этого:

<asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton>
<span onclick="document.getElementById('lblMyLink').click();">My Label</span>

Ответ 8

вы всегда можете развернуть свой собственный элемент управления, который создает диапазон, с стандартным javascript с поддержкой .net, но, как было сказано ранее, с помощью метки ссылок с классом CSS было бы проще

Ответ 9

Просто чтобы ответить на эту проблему, Я использовал ярлык на моей странице .aspx, который должен был быть видимым только в моем шаблоне ItemList, если в наборе данных есть дочерние записи.

Я добавил функцию onclick к метке:

moreOptionsLabel.Attributes.Add( "onclick" , string.Format( "toggle_visibility ('{0}')", div.ClientID));

в моем .cs файле. Теперь он будет контролировать тег div на странице .aspx, чтобы отображать или скрывать записи - потому что onclick указывает на функцию javascript на стороне клиента. Обратите внимание на div.ClientID, который делает это работоспособным в datalist.

Как отмечалось выше - тег span действительно становится функциональным с помощью "onclick" . И поскольку управление меткой отображается как диапазон после запроса страницы, использование Addtribute.Add( "onclick" .... работает.

Результат - показать/скрыть функциональность данных без выполнения обратной передачи. Если вы используете элементы управления LinkButton или simlar - возврат назад и перезагрузка страницы неизбежны - если вы не хотите попасть в какой-либо материал Ajax.

ПРИМЕЧАНИЕ. Тег span не будет выглядеть интерактивным, если вы не нарисуете его с помощью подчеркивания и курсора.

Кредит на эту идею исходит от Уилла Асрири на http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx

Ответ 10

Вам нужно создать объект класса, который наследуется от метки и обработчика события onclick, который будет методом yourslef и использовать ваш объект как пользовательский ярлык.