• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ASP.NET服務器控件發送腳本(2)

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    使用 ReGISterStartupScript() 和 RegisterClientScriptBlock() 添加客戶端腳本塊 System.Web.UI.Page 類包含的兩個方法可以將客戶端腳本代碼發送到由 ASP.net Web 頁面提供的 HTML 中: RegisterStartupScript(key, script) RegisterClientScriptBlock(key,
         使用 ReGISterStartupScript() 和 RegisterClientScriptBlock() 添加客戶端腳本塊
      
        System.Web.UI.Page 類包含的兩個方法可以將客戶端腳本代碼發送到由 ASP.net Web 頁面提供的 HTML 中:
      
      
      RegisterStartupScript(key, script)
      RegisterClientScriptBlock(key, script)
      
        這兩個方法都接受兩個字符串作為輸入。第二個參數 script 是要插入到頁面中的客戶端腳本,包括 <script> 的起始標記和終止標記。第一個參數 key 是插入的客戶端腳本的唯一標識符。
      
        這兩個方法唯一的不同之處在于從“何處”發送腳本塊。RegisterClientScriptBlock() 在 Web 窗體的開始處(緊接著 <form runat="server"> 標識之后)發送腳本塊,而 RegisterStartupScript() 在 Web 窗體的結尾處(在 </form> 標識之前)發送腳本塊。
      
        為什么會有兩種不同的方法來發送客戶端腳本?要更好地了解這一點,我們必須首先了解,客戶端腳本可以分為兩類:一類是在加載頁面后立即運行的代碼,一類是在發生某些客戶端事件時才運行的代碼。前者的常見示例是將焦點設置到文本框的客戶端代碼。例如,當您訪問 Google 時,在頁面加載后就會執行一小段客戶端代碼,以自動將焦點設置到搜索文本框。
      
        以下是后一類代碼(為響應客戶端事件而運行的代碼)的示例。具體而言,在該示例中,單擊按鈕時將顯示一個彈出式對話框:
      
      
      <html>
      <body>
      <form>
      <script language="JavaScript">
      <!--
      function displayPopup() {
      alert("Hello, world.");
      }
      // -->
      </script>
      
      <input type="button" value="Click Me!" onclick="displayPopup()" />
      </form>
      </body>
      </html>
      
        在這段代碼中,<input> 標記中的 onclick="displayPopup()" 用于指明在單擊按鈕時,JavaScript 函數 displayPopup() 應該運行。
      
        RegisterStartupScript() 方法可用于添加要在加載頁面后運行的腳本塊。通過這種方法添加的腳本塊位于 Web 窗體的結尾處,因為必須在腳本運行前定義腳本要修改的 HTML 元素。也就是說,如果您要使用客戶端腳本將焦點設置到文本框,必須確保文本框的 HTML 標記位于設置該文本框的焦點的腳本之前。例如,下面的 HTML 將顯示一個文本框,并將焦點設置到該文本框:
      
      
      <input type="text" id="myTextBox" />
      
      <script language="JavaScript">
      <!--
      document.getElementById("myTextBox").focus();
      // -->
      </script>
      
        相反,以下 HTML 不會將焦點設置到文本框,因為文本框是在腳本塊“之后”定義的:
      
      
      <script language="JavaScript">
      <!--
      document.getElementById("myTextBox").focus();
      // -->
      </script>
      
      <input type="text" id="myTextBox" />
      
        因此,RegisterStartupScript() 方法將 <script> 塊置于 Web 窗體的結尾處,以保證在執行客戶端腳本之前已聲明 Web 窗體中的所有 HTML 元素。
      
        RegisterClientScriptBlock() 方法用于為響應客戶端事件而執行的腳本代碼。通過此方法發送的腳本塊位于 Web 頁面的開始處,因為這種方法不要求將腳本塊置于所有 HTML 元素之后。
      
        探討IsStartupScriptRegistered() 和 IsClientScriptBlockRegistered()
      
        除RegisterStartupScript() 和 RegisterClientScriptBlock() 方法之外,Page 類還包含兩個在發送客戶端腳本時常用的輔助方法:
      
      
      IsStartupScriptRegistered(key)
      IsClientScriptBlockRegistered(key)
      
        如上所述,在使用 RegisterStartupScript() 或 RegisterClientScriptBlock() 插入客戶端腳本塊時,提供了一個唯一標識腳本塊的關鍵字。這兩個方法都接受一個輸入(字符串 key),并返回一個布爾值,以指示帶有指定關鍵字的腳本塊是否已添加到頁面中。具體地說,如果帶有特定 key 的腳本塊已經注冊,這些方法將返回 True,否則將返回 False。
      
        要了解如何使用這兩個方法,可以看一看 ASP.NET 驗證 Web 控件,如 RequiredFieldValidator、RegularExpressionValidator 等等。這些控件都會用到一個常用的驗證 JavaScript 文件 (WebValidation.js),該文件位于 ASP.NET Web 應用程序的 aspnet_client/system_web/版本號 目錄中。因此,所有這些控件都會發送相同的腳本塊,這個腳本塊將調用在 WebValidation.js 文件中定義的相應的 JavaScript 函數,以啟動客戶端的驗證過程。要完成這個過程,這些控件會使用 Page 類的 RegisterClientScriptBlock() 方法,并使用關鍵字 ValidatorIncludeScript。
      
        接下來要考慮的是,如果一個 ASP.NET Web 頁面中包含多個驗證 Web 控件,會出現什么情況呢?所有這些 Web 控件都要使用相同的關鍵字發送相同的腳本塊。如果使用這個關鍵字調用兩次 RegisterClientScriptBlock() 或 RegisterStartupScript() 方法,則第二次調用會被認為是復制腳本塊而被忽略。因此,即使一個 Web 頁面上有多個驗證控件,也只是發送一個公共腳本塊的實例。但是,請注意,除第一個控件之外的其他所有驗證 Web 控件都會構建要發送的公共客戶端腳本,而這只是在浪費時間。
      
        這時就應該使用 IsClientScriptBlock() 和 IsStartupScript() 方法。這樣一來,驗證 Web 控件就不會先花時間構建要發送的客戶端代碼,而是先檢查是否已經存在使用關鍵字 ValidatorIncludeScript 注冊的腳本。如果存在,控件就會放棄構建客戶端腳本塊,因為腳本塊已經由頁面上的其他驗證控件構建了。
      
        因此,每次構建客戶端腳本時,應該首先調用 IsClientScriptBlock() 或 IsStartupScript() 方法,以確定是否需要生成客戶端腳本。在下面一節,我們將看到一些示例,在這些示例中,IsClientScriptBlock()、IsStartupScript() 方法先后與 RegisterClientScriptBlock() 和 RegisterStartupScript() 方法結合使用。
      
      
      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>