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

ASP.NET服務器控件開發(2)--繼承WebControl類

編輯:關於ASP.NET

先來介紹下WebControl類

WebControl類:

WebControl 類從 Control 派生,用作定義 System.Web.UI.WebControls 命名空間中的所有控件的公共方法、屬性和事件的基類。提供所有 Web 服務器控件的公共屬性、方法和事件。通過設置在此類中定義的屬性,可以控制 Web 服務器控件的外觀和行為。主要的屬性有:AccessKey、Attributes、 Width、Height等。此外,一個從 WebControl 派生的控件也自行參與到 ASP.NET 的主題功能。WebControl類的屬性和方法詳細的內容可以參看MSDN。

這裡再簡單的說下WebControl和HtmlContrlol的區別:

Web控件和Html控件雖然好多功能相同並且長得很像,但是它們的內部實現機制是完全不一樣的。

Web控件具有回送功能,能夠用ViewState維持控件的狀態。Html控件則不能,當點擊頁面的操作,其狀態就會丟失。(ViewState後面會有講解)

Html控件與Web控件最大的區別是它們對事件處理的方法不同。對於Html窗體控件,當引發一個事件時,浏覽器會處理它。但對於Web控件,事件僅由浏覽器生成,但浏覽器不會處理它,客戶端要給服務器發個信息,告訴服務器處理事件。 不過有些事件,

比如:按下鍵/移動/鼠標等事件,Asp.net中沒有這些事件(因為這些事件即時性強,服務器處理得不夠及時),這時候Html控件就發揮其作用了,結合Html事件協助完成。

有的資料上說:Web控件要比Html控件執行效率要好。這個沒有太好的依據,僅供大家參考,高手也可以談談自己的想法。

自己動手:

這裡我們不像上篇文章那樣,簡單的創建一個類庫工程,而是直接創建ASP.NET服務器控件項目。

VS2008會自動的為我們生成如下代碼:

namespace SelfServerControl
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:MyControl runat=server></{0}:MyControl>")]
    public class MyControl : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? "[" + this.ID + "]" : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}

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