程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET服務器控件開發(5)--添加客戶端功能

ASP.NET服務器控件開發(5)--添加客戶端功能

編輯:關於ASP.NET

隨著Ajax等技術的發展,客戶端功能也逐漸變得越來越重要。如果在服務器控件中添加客戶端功能,將會創作出功能更強大,界面更豐富的服務器控件。

客戶端功能:

在Web編程中,客戶端功能傳統上是由Web頁開發人員負責,並且不被封裝在服務器組件中。ASP.NET脫離了這一范疇並使服務器控件能夠發出客戶端腳本,從而使服務器控件能夠將客戶端處理與服務器端處理結合起來。例如按鈕控件的OnClientClick屬性,就可以在其中聲明一段腳本在客戶端執行。

OnClientClick--->return confirm('Hello Word'),單擊按鈕時就會在客戶端彈出一個提示框。

實現客戶端功能的技術主要是客戶端腳本(JavaScript、VBScript等)和DHTML。這個想必大家都知道。

ASP.NET服務器控件中客戶端功能的實現:

下面我們進入正題,來看看ASP.NET服務器控件中是如何實現客戶端功能的:代碼如下:

namespace ServerClientControl
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:SimpleButton runat=server></{0}:SimpleButton>")]
    public class SimpleButton :Button
    {
        protected override void RenderContents(HtmlTextWriter output)
        {

        }

        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);
            writer.AddAttribute("onclick", "window.confirm('Hello World! ');");
        }

    }
}

我們創建一個繼承自Button的類,通過AddAttributesToRender()方法添加一個onclick客戶端事件。這樣就簡單的實現了向服務器控件添加客戶端事件的功能。

ClientScriptManager 類

當然,這只是簡單的方式。在 .NET Framework 2.0 版中為我們新增了ClientScriptManager 類。通過在網頁的 HTML 標記中包含腳本,可以聲明方式向網頁添加客戶端腳本。然而,有些情況下需要動態添加客戶端腳本。

實現復雜客戶端功能有關的幾個常用方法:

RegisterClientScriptBlock():向頁的頂部添加一個腳本塊。以字符串形式創建腳本,然後將其傳遞給方法,方法再將腳本添加到頁中。可以使用此方法將任何腳本插入到頁中。請注意,腳本可能在所有元素完成之前呈現到頁中;因此,您可能無法從腳本中引用頁上的所有元素。

RegisterClientScriptInclude():與 RegisterClientScriptBlock 方法類似,但此方法將添加引用外部 .js 文件的腳本塊。包含文件在任何其他動態添加的腳本之前添加;因此,您可能無法引用頁上的某些元素。

RegisterStartupScript():向頁中添加一個腳本塊,該腳本塊在頁完成加載後引發頁的 onload 事件之前執行。該腳本通常不創建為事件處理程序或函數;它通常只包含要執行一次的語句。

RegisterOnSubmitStatement():添加響應頁的 onsubmit 事件而執行的腳本。該腳本在提交頁之前執行,允許您取消提交。

IsStartupScriptRegistered():確定Page對象是否注冊了啟動腳本。 

IsClientScriptBlockRegistered():確定Page對象是否注冊了客戶端腳本。

更詳細的說明講解大家可以參看MSDN。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved