Есть ли лучший способ настройки событий onclick на стороне клиента при использовании элементов управления ASP.Net? Простое добавление атрибута onclick приводит к предупреждению Visual Studio о том, что onclick не является допустимым атрибутом этого элемента управления. Добавление его во время события Page_Load через codebehind работает, но менее понятно, чем хотелось бы.
Это единственные два варианта? Есть ли правильный способ сделать это, что мне не хватает?
Спасибо! Эрик Сиппл





Можно установить значение WebControl.Attributes["onclick"]. Если ASP.NET требуется обработчик click на стороне клиента, он объединит значения, разделенные точкой с запятой.
**просто замечание к ответу: проверка HTML в VS часто бывает BS. Он жалуется на вещи, которые работают в реале, даже если это плохая практика. Но иногда приходится нарушать правила, чтобы добиться желаемого.
Каждая страница ASP.NET (версии 2.0 и выше) поставляется с ClientScriptManager. Вы используете это для регистрации javascript из кода на стороне сервера. Вы можете передать javascript, который регистрирует события в элементах управления после загрузки страницы, когда все элементы управления HTML на странице присутствуют в DOM.
Он представляет собой единое единое место на страницах для динамического добавления javascript, что неплохо. Однако это ужасно некрасиво.
В это время смерти модели управления сервером ASP.NET вы можете захотеть установить события так, как они будут в будущем ASP.NET MVC. Возьмите копию jQuery и добавьте ее на свой сайт. Затем вы можете легко зарегистрировать свои мероприятия следующим образом:
<html>
<head>
<script type = "text/javascript" src = "jquery.js"></script>
<script type = "text/javascript">
$(document).ready(function(){
$("controlId").bind("click", function(e) { /* do your best here! */ });
});
</script>
</head>
<!-- etc -->
</html>
Вы можете добавлять события через Javascript к нужным HTML-элементам. Это самый чистый способ, поскольку он не смешивает серверные и клиентские технологии. Более того, таким образом, многие обработчики могут быть зарегистрированы для одного и того же события (в отличие от атрибута onclick).
По сути, код будет
document.getElementById('myLovelyButtonId').attachEvent('onclick',doSomething)
для Internet Explorer и
document.getElementById('myLovelyButtonId').addEventListener('click',doSomething,false)
для других браузеров. (doSomething - это обработчик событий - функция JavaScript). Эти вызовы должны выполняться в обработчике событий оконная нагрузка.
Прочтите статья о расширенной регистрации событий в Quirksmode для получения дополнительной информации.
Также рассмотрите возможность использования такой библиотеки, как jQuery. Таким образом, заявление станет
$('#myLovelyButtonId').click(
function doSomething () {
alert('my lovely code here');
});
Исправляйте грамматические или орфографические ошибки.
Уточняйте смысл, не меняя его.
Исправляйте мелкие ошибки.
Добавьте связанные ресурсы или ссылки.
Всегда уважайте первоначального автора.