簡體   English   中英

如何始終訪問ASP.NET客戶端API?

[英]How do I get access to the ASP.NET Client-Side API at all times?

一些背景。 該項目是使用ASP.NET AJAX Extensions 1.0的VS 2005 Web應用程序。

問題,如何在不使用ScriptManager控件的情況下引用Scriptmanager控件使用的JavaScript文件,或者如何更早地加載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控件將在某些時候呈現,因為它在我的MasterPage中。

也許問題是我以錯誤的方式解決這個問題。 任何幫助是極大的贊賞。

當您使用MS AJAX控件時,您可以利用自動連接的pageLoad函數名稱,並將代碼放在那里。

你的pageLoad函數是在文檔准備就緒,所有內容都被加載的時候被調用的,你最好把DOM放到你心中(這有點像jQuery的document.ready函數,但實際上稍后會觸發)。

可以在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';
  }
}

我不確定我是否按照您的問題進行操作,但希望這會有所幫助。 確保您可以訪問ASP.NET AJAX客戶端庫的標准方法是將ScriptManager控件添加到母版頁,然后在需要時在內容頁面,用戶控件和Web部件中使用ScriptManagerProxy控件。

ScriptManagerProxy控件中的設置與母版頁中ScriptManager的設置相結合,以確保頁面可以使用正確的JavaScript代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM