程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET服務器控件編程之熱身運動

ASP.NET服務器控件編程之熱身運動

編輯:.NET實例教程

創建ASP.Net裡的服務器控件和Windows Form的控件一樣,也有幾種方式:
  
    1、 用戶控件(user control)
  
    2、 從Control、WebControl派生的自定義控件
  
    3、 從已有的ASP.Net服務器控件擴展
  
    用戶控件以.ascx為擴展名,並保存為文本文件,用戶控件不像從Control和WebControl派生下來的服務器控件那樣需要預編譯,當用戶控件在.aspx頁面中使用的時候,頁面解析器從.aspx文件中動態地生成一個類,並且將其編譯到一個裝配件中。其優點有:解決了代碼復用,同時每一個用戶控件有自己的對象模型,其編寫語言和.ASPx頁面的語言無關。
  
    從已有的ASP.net服務器控件擴展,主要是對.Net原生的服務器控件的功能加強以適用我們開發和最終用戶的需要。
  
    從Control、WebControl派生的自定義控件以編譯過的類庫形式部署的。
  
    上述的1和3在本系列中將不做講解,在本系列中只講解從Control、WebControl派生的服務器控件。
  
    我們要編寫一個自定義控件,只要從Control、WebControl繼承即可,Control已經實現了IComponent接口,而WebControl本身又是從Control上派生下來的,因而他們也支持組件的可視化設計。
  
    Render方法和HtmlTextWriter類,當我們從一個Control類派生一個ASP.Net服務器控件時,Control類為我們提供了可重載的Render和一個HtmlTextWriter類型的實例,Render方法就是將服務器控件內容發送到提供的 HtmlTextWriter 對象,而HtmlTextWriter封裝了Html寫文本流的功能函數。
  
  using System;
  using System.Collections.Generic;
  using System.Text;
  
  namespace ClassLibrary1
  {
   public class Control1 : System.Web.UI.Control
   {
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
     writer.Write("I'm here.");
    }
   }
  
   public class Control2 : System.Web.UI.WebControls.WebControl
   {
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
     writer.Write("I'm here too.");
    }
   }
  }
  
    上面的代碼裡我們定義了一個Contro1和Control2,他們分別從Control和WebControl繼承下來,那他們之間到底有什麼樣的本質區別呢?先看下面的效果: 
   
  

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