Почему этот JS терпит неудачу, когда я использую главную страницу? (ASP.NET) - PullRequest
1 голос
/ 07 апреля 2011

В настоящее время я работаю над проектом, в котором мне нужно использовать много AJAX AutoCompleteExtenders, и они работают нормально, но сейчас я исправляю код и реализую главную страницу, у меня возникают проблемы,У меня есть этот JS:

$find('txtName')._onMethodComplete = function(result, context) {

$find('txtName')._update(context, result, false);
webservice_callback(result,context);
};

И когда я загружаю страницу, возникает эта ошибка, относящаяся к этому фрагменту:

Ошибка времени выполнения Microsoft JScript: «ноль» - ноль или не объект

Просто повторюсь, это происходит только тогда, когда у меня есть главная страница по какой-то странной причине.Есть идеи?

Ответы [ 5 ]

1 голос
/ 07 апреля 2011

Вам необходимо использовать <%=txtName.ClientID%>, потому что при использовании главных страниц ваши идентификаторы будут искажены, чтобы избежать конфликта имен между masterpage и aspx / usercontrols и т. Д.

Однако обратите внимание, что для использования <%= вам нужно будет включить JS в код разметки ASP.NET. Это можно сделать с помощью IIS #include, а не с использованием script src.

Пример:

<!-- #Include virtual=".\JS\YourJSFileWithASPNETMarkup.js" -->
0 голосов
/ 07 апреля 2011

Когда вы используете главную страницу, идентификатор ваших элементов управления изменяется, поэтому вы не можете использовать тот же идентификатор в Javascript, вместо этого вы можете изменить свой селектор следующим образом: $ ('input [id * = "txtName"]') теперь он находит все элементы управления, которые имеют идентификатор, содержащий txtName. Есть разные селекторы такого типа, которые вы можете использовать. вот полезная ссылка

0 голосов
/ 07 апреля 2011

Если вы используете .NET 4, тогда вы можете добавить ClientIDMode="Static" в директиву страницы, которая скажет ASP.NET держать свои грязные руки над идентификаторами элементов.

0 голосов
/ 07 апреля 2011

Можете ли вы попробовать это:

('<% = txtName.ClientID>') ._ onMethodComplete = функция (результат, контекст) {

0 голосов
/ 07 апреля 2011

Попробуйте просмотреть источник на своей странице и убедитесь, что все еще называется txtName.Иногда на главных страницах имя меняется.

...