国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 17:15:08
字體:
來源:轉載
供稿:網友
  創建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繼承下來,那他們之間到底有什么樣的本質區別呢?先看下面的效果:

 

  從上面的效果我們不難看出他們之間有什么區別,WebControl類通過屬性提供了對樣式的支持,比如字體、高度、背景色等等。那我們什么時候來選擇從Control派生,什么時候又選擇從WebControl派生呢?如果控件要生成非可視化的元素或顯示給非HTML客戶端,就從Control派生,如SqlDataSource;如果要提供客戶端生成可視化的HTML,那我們就從WebControl派生,如TextBox。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 霍州市| 巴林右旗| 渝北区| 江都市| 简阳市| 建平县| 松滋市| 临漳县| 黄梅县| 武鸣县| 盐山县| 徐汇区| 万安县| 西昌市| 凯里市| 广水市| 长寿区| 四平市| 嘉善县| 宁陕县| 瑞昌市| 伊通| 斗六市| 隆昌县| 安溪县| 杂多县| 海安县| 昌邑市| 子洲县| 威宁| 阿拉尔市| 阜南县| 泰宁县| 定襄县| 南汇区| 昭平县| 双流县| 普格县| 平武县| 鄄城县|