Использование Javascript с элементами управления ASP.Net - PullRequest
2 голосов
/ 08 октября 2008

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

Это только два варианта? Есть ли правильный способ сделать это, что мне не хватает?

Спасибо! Эрик Сиппл

Ответы [ 4 ]

2 голосов
/ 08 октября 2008

** просто предварительная заметка об ответе: проверка HTML в VS часто является BS. Он жалуется на то, что работает на IRL, даже если это плохая практика. Но иногда вам нужно изменить правила, чтобы все было сделано.

Каждая страница 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>
2 голосов
/ 08 октября 2008

Вы можете добавить события через 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');
    });
1 голос
/ 08 октября 2008

Установка значения для WebControl.Attributes["onclick"] в порядке. Если ASP.NET требуется обработчик click на стороне клиента, он объединит значения, разделенные точкой с запятой.

0 голосов
/ 19 июня 2009

Исправление грамматических или орфографических ошибок.

Уточнить значение, не меняя его.

Исправьте мелкие ошибки.

Добавление связанных ресурсов или ссылок.

Всегда уважайте оригинального автора.

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