Как мне всегда получать доступ к клиентскому API ASP.NET? - PullRequest
3 голосов
/ 13 марта 2009

Некоторый фон. Проект представляет собой веб-приложение VS 2005 с использованием расширений ASP.NET AJAX 1.0.

Вопрос, Как я могу ссылаться на файлы JavaScript, которые используются элементом управления Scriptmanager, без использования элемента управления ScriptManager или как я могу загрузить файлы ScriptManager JS ранее (я не думаю, что это возможно, так как ScriptManager должен быть в теге формы на стороне сервера)?

У меня есть элемент управления ScriptManager на главной странице, но часто бывают страницы, которые просто хороши для не асинхронных обратных передач, и я создаю объекты на стороне клиента до загрузки менеджера сценариев. Теперь я знаю, что хорошей практикой является загрузка скриптов в конце разметки и CSS в начале, но в моем случае некоторые скрипты, которые я создаю, должны быть раньше, обычно в теге head, потому что, например, у меня будет повторитель, который создает объект на стороне клиента.

Так вот что я хотел бы:

// Мои скрипты

Прямо сейчас это то, что я делаю, чтобы обойти проблему:

(function() {
   var myInterval;

   myInterval = setInterval(function() {
      if (!Type) {
         return;
      }

      clearInterval(myInterval);

      Type.registerNamespace("Awesome");

      Awesome.Widget = function() {
         var _this = this;

         this.myProperty = 'This is awesome';
      }
   }, 40);
})();

или я делаю это:

var Awesome = {};

Awesome.Widget = function {
   /// Awesome code.
}

Также было бы неплохо не загружать эти сценарии дважды, так как элемент управления ScriptManager будет отображаться в какой-то момент, поскольку он находится в моей мастер-странице.

Может быть, проблема в том, что я поступаю неправильно. Любая помощь с благодарностью.

Ответы [ 2 ]

2 голосов
/ 19 марта 2009

Поскольку вы используете элементы управления MS AJAX, вы можете воспользоваться автоматически назначенным именем функции pageLoad и вставить туда код.

Ваша функция pageLoad вызывается, когда документ готов, все загружено, и вы можете использовать DOM для своего сердца (это немного похоже на функцию document.ready в jQuery, но фактически срабатывает чуть позже).

Более подробную информацию можно найти на странице События жизненного цикла клиента AJAX .

function pageLoad(sender, args){
  Type.registerNamespace("Awesome");

  Awesome.Widget = function() {
     var _this = this;

     this.myProperty = 'This is awesome';
  }
}

Если вы не беспокоитесь о готовности документа, но можете довольствоваться всеми загружаемыми сценариями и анализом, вы можете вместо этого подключиться к событию init .

// Attach a handler to the init event.
Sys.Application.add_init(applicationInitHandler);

function applicationInitHandler() {
  Type.registerNamespace("Awesome");

  Awesome.Widget = function() {
     var _this = this;

     this.myProperty = 'This is awesome';
  }
}
0 голосов
/ 13 марта 2009

Я не уверен, что слежу за вашим вопросом, но, надеюсь, это поможет. Стандартный способ обеспечить доступ к клиентским библиотекам ASP.NET AJAX - добавить элемент управления ScriptManager на главную страницу, а затем при необходимости использовать элементы управления ScriptManagerProxy на страницах содержимого, пользовательских элементах управления и веб-частях.

Настройки из элементов управления ScriptManagerProxy объединяются с настройками ScriptManager на главной странице, чтобы обеспечить доступность правильного кода JavaScript для страницы.

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