#asp.net #vb.net
#asp.net #vb.net
Вопрос:
Кто-то только что уволился с моей работы, и я унаследовал веб-проект, над которым он работал. У меня мало опыта работы с asp / vb, и я, возможно, упускаю здесь что-то очевидное, но это моя проблема:
Я сталкиваюсь с этой странной ошибкой, когда я пытаюсь получить доступ к элементам моей страницы aspx с помощью Document.getElementByID()
in, но я получаю только сообщение об ошибке » ‘Document’ не объявлен. Он может быть недоступен из-за его уровня защиты «.
Я получаю эту ошибку на всех страницах, к которым пытаюсь получить доступ Document
, чтобы найти нужные элементы. В коде нет предыдущей ссылки на «Документ», так что, возможно, проблема существовала с самого начала, но никогда не была замечена.
Я попытался вызвать Document
в другой функции / области видимости, но ошибка сохраняется. Я также проверил, что все страницы наследуются от System.Web.UI.Page
. У меня нет других проблем с проектом, страницы отображаются корректно, и я могу получить доступ к элементам, сгенерированным «Файлом Code Gen».
Мне было интересно, могут ли отсутствовать какие-либо ссылки на проект или может быть что-то, что я не проверил, что могло бы объяснить это.
Комментарии:
1. это document.getElementById, а не «Документ», обратите внимание, что javascript чувствителен к регистру
2. document.getElementById (обратите внимание на корпус) — это вызов JavaScript. Вы используете JavaScript или VB-код, стоящий за ним?
3. Хм, похоже, я запутался в своих мыслях… Видите ли, в коде на стороне сервера для некоторых полей настроен прослушиватель «при изменении» и выполняется проверка некоторых входных данных. Это немного расстраивает, так как каждый раз, когда одно текстовое поле теряет фокус, страница выполняет обратную отправку. Итак, я планировал выполнить некоторую проверку на стороне клиента, чтобы немного сгладить ситуацию, выполнив некоторый AJAX и используя для этого существующий серверный код. Но то, как я планировал это (передавая идентификатор в Ajax и используя его для получения элемента на сервере), все равно бы не сработало, теперь, когда я думаю об этом .. спасибо за ответ!
4. @UncleBen Возможно, стоит знать, что класс TextBox имеет свойство AutoPostBack, для которого можно установить значение false, чтобы остановить резервное копирование при потере фокуса.
5. @dougajmcdonald Спасибо за упоминание, будет ли это «деактивировать» прослушиватель, объявленный на стороне сервера (поскольку обратной отправки не будет)?
Ответ №1:
document.getElementById() — это функция JavaScript на стороне клиента.
Ваша страница aspx — это веб-форма на стороне сервера.
Вы не можете получить доступ к функциям на стороне клиента в вашем коде таким образом.
Чтобы ссылаться на элементы управления на стороне сервера (например, те, которые определены на вашей странице aspx), вы можете просто использовать их свойство ‘id’ в aspx
Комментарии:
1. Да, как я и думал, это было что-то вроде очевидного … но, посмотрев вверх, я увидел, что некоторые люди используют это: msdn.microsoft.com/en-us/library/… Похоже, это то, что меня запутало .. ..