校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET服務器控件開發(1)封裝html

ASP.NET服務器控件開發(1)封裝html

熱門標簽:代理接電話機器人如何取消 地圖定位圖標標注 地圖標注專業團隊 天心智能電銷機器人 400電話辦理哪家性價比高 塔城代理外呼系統 地圖標注的公司有哪些 遂寧市地圖標注app 濮陽外呼電銷系統怎么樣

在我們的項目開發中,由于ASP.NET的服務器控件功能有限,所以我們經常會自己定義特定的服務器控件,來滿足開發中特定的業務要求。可見知道如何開發ASP.NET服務器控件是非常有必要的。

其實簡單的實現ASP.NET服務器控件不是很難,以前園子中也有大牛介紹過相應的內容,這里站在巨人的肩膀上也來分享下開發ASP.NET服務器控件的方法和自己的一些體會。寫給新手,高手繞過。

學習ASP.NET的服務器控件開發,個人認為最好的方式就是自己去實踐,當然理論知識也是很重要的,但是如果我們只是看理論的知識,可能會被里面的一些概念鬧糊涂,看著看著就睡著了,如果自己動手創做出一個自己的控件,效果就不一樣了。

下面就通過實例創建一個簡單的服務器控件:

首先我們創建一個類庫工程SelfWebControl。在同一解決方案中我們在創建一個ASP,NET Web應用程序(用來測試我們得控件)

namespace SelfWebControl
{
  public class ControlA:Control//Control類中定義了所有ASP.NET服務器控件共享的屬性和方法
  {

  }
}

我將ControlA類繼承Control類,Control類是.NET中所有控件的基類,其中包含了控件共有的屬性和方法。

Control類

公共屬性:

ClientID 獲取由 ASP.NET 生成的服務器控件標識符。

Controls 獲取 ControlCollection 對象,該對象表示 UI 層次結構中指定服務器控件的子控件。

EnableViewState 獲取或設置一個值,該值指示服務器控件是否向發出請求的客戶端保持自己的視圖狀態以及它所包含的任何子控件的視圖狀態。

ID 獲取或設置分配給服務器控件的編程標識符。

NamingContainer 獲取對服務器控件的命名容器的引用,此引用創建唯一的命名空間,以區分具有相同 Control.ID 屬性值的服務器控件。

Page 獲取對包含服務器控件的 Page 實例的引用。

Parent 獲取對頁 UI 層次結構中服務器控件的父控件的引用。

Site 獲取有關服務器控件所屬 Web 站點的信息(原文自MSDN,但是我認為不對,應該是指組件的“容器”站點,并非 web site)。

TemplateSourceDirectory 獲取包含當前服務器控件的 Page 或 UserControl 的虛擬目錄。

UniqueID 獲取服務器控件的唯一的、以分層形式限定的標識符。

Visible 獲取或設置一個值,該值指示服務器控件是否作為 UI 呈現在頁上。

公共方法:

DataBind 將數據源綁定到被調用的服務器控件及其所有子控件。

Dispose 使服務器控件得以在從內存中釋放之前執行最后的清理操作。

Equals(從 Object 繼承) 已重載。確定兩個 Object 實例是否相等。

FindControl 已重載。在當前的命名容器中搜索指定的服務器控件。

GetHashCode(從 Object 繼承) 用作特定類型的哈希函數,適合在哈希算法和數據結構(如哈希表)中使用。

GetType(從 Object 繼承) 獲取當前實例的 Type。

HasControls 確定服務器控件是否包含任何子控件。

RenderControl 將服務器控件的內容輸出到所提供的 HtmlTextWriter 對象中;如果已啟用跟蹤功能,則存儲有關控件的跟蹤信息。

ResolveUrl 根據傳遞給 TemplateSourceDirectory 屬性的值,將相對 URL 解析為絕對 URL。

ToString(從 Object 繼承) 返回表示當前 Object 的 String。

公共事件:

DataBinding 當服務器控件綁定到數據源時發生。

Disposed 當從內存釋放服務器控件時發生,這是請求 ASP.NET 頁時服務器控件生存期的最后階段。

Init 當服務器控件初始化時發生;初始化是控件生存期的第一步。服務器控件應執行任何創建和設置實例所需的初始化步驟。在該事件內無法使用視圖狀態信息;它尚未填充。在該事件的生存期內不應訪問其他服務器控件,不論它是此控件的子級還是父級。不一定會創建其他服務器控件,也不一定能夠訪問它們。

Load 當服務器控件加載到 Page 對象中時發生。通知服務器控件執行任何設置為在每次頁請求時發生的處理步驟。開發者可以訪問視圖狀態信息并利用該事件形成 POST 數據。還可以訪問頁控件層次結構內的其他服務器控件。

PreRender 當服務器控件將要呈現給其包含的 Page 對象時發生。使用該事件在服務器控件呈現給頁的輸出之前執行任何更新。在該事件的生存期內可以保存服務器控件視圖狀態的任何更改。不保存呈現階段內所做的同樣更改。

Unload 當服務器控件從內存中卸載時發生。

保護的屬性:

ChildControlsCreated 獲取一個值,該值指示是否已創建服務器控件的子控件。

Context 為當前 Web 請求獲取與服務器控件關聯的 HttpContext 對象。

Events 獲取控件的事件處理程序委托列表。此屬性為只讀。

HasChildViewState 獲取一個值,該值指示當前服務器控件的子控件是否具有任何已保存的視圖狀態設置。

IsTrackingViewState 獲取一個值,該值指示服務器控件是否將更改保存到其視圖狀態。

ViewState 獲取狀態信息的字典,這些信息使您可以在同一頁的多個請求間保存和還原服務器控件的視圖狀態。

ViewStateIgnoresCase 獲取一個值,該值指示 StateBag 對象是否不區分大小寫。

受保護的方法:

AddParsedSubObject 通知服務器控件某個元素(XML 或 HTML)已經過語法分析,并將該元素添加到服務器控件的 ControlCollection 對象。

ClearChildViewState 刪除服務器控件的所有子控件的視圖狀態信息。

CreateChildControls 通知使用基于合成的實現的服務器控件創建它們包含的任何子控件,以便為回發或呈現做準備。

CreateControlCollection 創建一個新的 ControlCollection 對象來保存服務器控件的子控件(包括文本控件和服務器控件)。

EnsureChildControls 確定服務器控件是否包含子控件。如果不包含,則創建子控件。

Finalize(從 Object 繼承) 已重寫。允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源并執行其他清理操作。

IsLiteralContent 確定服務器控件是否只包含文字內容。Asp.net頁面中普通的html標簽被asp.net編譯為一個 LiteralContent控件(意味著輕型控件)。

LoadViewState 從 SaveViewState 方法保存的上一個頁請求還原視圖狀態信息。

MapPathSecure 如果請求服務器控件有足夠的安全權限讀取映射結果,檢索相對于源文件的映射物理文件路徑。

MemberwiseClone(從 Object 繼承) 創建當前 Object 的淺表副本。

OnBubbleEvent 確定服務器控件的事件是否沿頁的 UI 服務器控件層次結構向上傳遞。

OnDataBinding 引發 DataBinding 事件。

OnInit 引發 Init 事件。

OnLoad 引發 Load 事件。

OnPreRender 引發 PreRender 事件。

OnUnload 引發 Unload 事件。 注意 在服務器控件生存期的此階段,服務器控件應執行所有最后的清理操作,例如關閉文件、關閉數據庫連接和丟棄對象。

RaiseBubbleEvent 將所有事件源及其信息分配給控件的父級。

Render 將服務器控件內容發送到提供的 HtmlTextWriter 對象,此對象編寫將在客戶端呈現的內容。

RenderChildren 將服務器控件子級的內容輸出到提供的 HtmlTextWriter 對象,此對象編寫將在客戶端呈現的內容。

SaveViewState 保存自頁回發到服務器后發生的任何服務器控件視圖狀態更改。

TrackViewState 導致跟蹤服務器控件的視圖狀態的更改,以便這些更改可以存儲到服務器控件的 StateBag 對象中。通過 Control.ViewState 屬性可訪問此對象。


這里我們要重寫Render方法,通過HtmlTextWriter 對象將控件中的內容顯示出去。

namespace SelfWebControl
{
  public class ControlA:Control//Control類中定義了所有ASP.NET服務器控件共享的屬性和方法
  {
    protected override void Render(HtmlTextWriter writer)
    {
      writer.Write("table style='width:300px; height:200px; background-color:Bisque'>");
      writer.Write("tr>");
      writer.Write("td>這是第一列/td>");
      writer.Write("td>這是第二列/td>");
      writer.Write("td>這是第三列/td>");
      writer.Write("/tr>");
      writer.Write("/table>");
    }
  }
}

生成我們得SelfWebControl工程,再切換到ASP.NET應用程序的工具箱時,VS2008會自動的將我們剛剛創建的ControlA添加到工具箱中,避免了我們以前通過選擇項添加控件的過程。

這樣,我們就已最簡單的形式實現了一個ASP.NET服務器控件。但是如果我想修改表格的寬度,高度,背景色該怎么改呢?

這就需要我們定義服務器控件的屬性。大家也都知道,ASP.NET的服務器控件有很多屬性,而我們現在的控件只有公有的幾個屬性。

先來看看我們做了那些改動:

public class ControlA:Control//Control類中定義了所有ASP.NET服務器控件共享的屬性和方法
  {
    private int _tWidth;
    private int _tHeight;
    private string _bgColor;

    
    [Browsable(true)]//在屬性窗口中是否可見
    [Category("Appearance")]//屬性的分類,如,行為,外觀,大家可以在屬性窗口看見這樣的分類
    [DefaultValue(100)]//屬性的默認值
    [Description("表格寬度")]//這些是顯示在屬性窗口底下的
    public int tWidth
    {
      get { return _tWidth; }
      set { _tWidth = value; }
    }

    [Browsable(true)]
    [Category("Appearance")]
    [DefaultValue(100)]
    [Description("表格高度")]
    public int tHeight
    {
      get { return _tHeight; }
      set { _tHeight = value; }
    }

    [Browsable(true)]
    [Category("Appearance")]
    [DefaultValue("Bisque")]
    [Description("表格背景顏色")]
    public string bgColor
    {
      get { return _bgColor; }
      set { _bgColor = value; }
    }

    protected override void Render(HtmlTextWriter writer)
    {
      writer.Write("table style='width:" + tWidth + "px; height:"+tHeight+"px; background-color:"+bgColor+"'>");
      writer.Write("tr>");
      writer.Write("td>這是第一列/td>");
      writer.Write("td>這是第二列/td>");
      writer.Write("td>這是第三列/td>");
      writer.Write("/tr>");
      writer.Write("/table>");
    }
  }

代碼很簡單,想必大家都能看懂,值得注意的就是對每一個屬性的聲明。需要引用命名空間:using System.ComponentModel;每一個標簽的作用我已經在代碼中做了說明,這樣我們就為我們得控件添加了屬性.

還要說明一點的就是,如果我們想在把控件拖到頁面中時標簽內自動的添加一些屬性,需要添加下面的代碼:

復制代碼 代碼如下:

[ToolboxData("{0}:ControlA runat='server' bgColor='red' tHeight='200' tWidth='300'>/{0}:ControlA>")]

值得注意的是這里的寫法,{0}的冒號中之后的那個"ControlA“就是類的名字,不要寫錯。還有runat='sever'一定要寫。

是不是很簡單,這樣,我們只是封裝了簡單的html來完成ASP.NET控件的制作。

小結:簡單的制作一個ASP.NET的服務器控件很簡單,但是光只是通過html的輸出有的時候意義不大,這里只是介紹一種方法和思路。打開學習定制自己的ASP.NET控件的第一扇門。在以后的文章中我會介紹針對于繼承WebControl開發ASP.NET控件。

標簽:吉林 麗江 婁底 宜春 重慶 汕頭 本溪 河南

巨人網絡通訊聲明:本文標題《ASP.NET服務器控件開發(1)封裝html》,本文關鍵詞  ASP.NET,服務器,控件,開發,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET服務器控件開發(1)封裝html》相關的同類信息!
  • 本頁收集關于ASP.NET服務器控件開發(1)封裝html的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    1024成人网| 国产一二三精品| 久久爱另类一区二区小说| 不卡一区中文字幕| 欧美日本在线观看| 国产精品国产精品国产专区不蜜| 亚洲成av人影院| 成人天堂资源www在线| 91精品国产aⅴ一区二区| 亚洲图片激情小说| 国产一区视频在线看| 欧美性xxxxx极品少妇| 国产精品天干天干在观线| 美女mm1313爽爽久久久蜜臀| 91麻豆swag| 国产精品乱人伦| 国产美女娇喘av呻吟久久| 69精品人人人人| 亚洲成人av资源| 在线欧美小视频| 国产精品高潮呻吟久久| 国产丶欧美丶日本不卡视频| 日韩精品一区二区三区视频 | 欧美一区二区免费视频| 国产精品久久久久久亚洲伦 | 717成人午夜免费福利电影| 一区视频在线播放| 东方欧美亚洲色图在线| 久久综合色8888| 国产在线精品不卡| 久久综合久久鬼色中文字| 蜜臀精品一区二区三区在线观看| 欧美亚洲一区三区| 亚洲r级在线视频| 欧美精品 国产精品| 午夜欧美电影在线观看| 欧美年轻男男videosbes| 亚洲网友自拍偷拍| 欧美色涩在线第一页| 亚洲国产视频一区二区| 欧美日韩一区二区在线视频| 亚洲伦理在线精品| av电影在线观看一区| 久久网这里都是精品| 美女精品自拍一二三四| 欧美一区二区三区视频在线观看| 一区二区三区不卡在线观看| 99国产精品视频免费观看| 国产精品美女久久久久久久久久久| 国产成人h网站| 国产欧美日韩视频在线观看| 国产最新精品免费| 久久色.com| 国产一区二区不卡老阿姨| 精品免费日韩av| 免费看日韩a级影片| 日韩亚洲欧美在线| 经典三级视频一区| 久久久亚洲午夜电影| 国产精品99久久久久久有的能看| 久久婷婷综合激情| 国产精品综合在线视频| 国产精品无码永久免费888| 粉嫩av一区二区三区在线播放| 色哟哟一区二区| 亚洲欧洲精品一区二区三区| 成人18视频在线播放| 中文字幕日韩一区| 日本高清不卡aⅴ免费网站| 一区二区免费看| 欧美久久一二三四区| 日本视频中文字幕一区二区三区| 日韩手机在线导航| 国产乱码精品一品二品| 中文字幕在线观看不卡| 色播五月激情综合网| 亚洲大型综合色站| 精品国产伦一区二区三区免费| 国产成人精品免费在线| 亚洲欧洲日产国码二区| 欧美日韩一区二区三区免费看 | 亚洲国产裸拍裸体视频在线观看乱了| 欧美图片一区二区三区| 麻豆国产91在线播放| 日韩免费观看2025年上映的电影| 国产精品18久久久久久久网站| 国产精品动漫网站| 日韩一区二区三区高清免费看看| 91免费观看在线| 亚洲人成小说网站色在线| 91国偷自产一区二区三区观看| 日韩精品久久久久久| 久久九九久精品国产免费直播| 一本久久综合亚洲鲁鲁五月天| 欧美aaaaaa午夜精品| 一区二区中文视频| 日韩久久久精品| 色天天综合久久久久综合片| 激情综合网天天干| 一区二区三区在线播放| 精品国产乱码久久久久久久 | 日韩精品欧美精品| 欧美国产精品一区二区三区| 欧美精品一卡两卡| 91小视频免费观看| 国产真实乱偷精品视频免| 亚洲综合丝袜美腿| 国产精品久久久久9999吃药| 日韩视频一区二区| 欧美亚洲动漫精品| 92精品国产成人观看免费| 黄色资源网久久资源365| 亚洲成av人片在线观看| 国产精品大尺度| 久久精品一区二区三区不卡| 欧美一区二区人人喊爽| 在线亚洲+欧美+日本专区| 成人做爰69片免费看网站| 久久av中文字幕片| 日本午夜一本久久久综合| 亚洲欧美国产三级| 国产日韩欧美综合在线| 日韩欧美成人激情| 91麻豆精品国产91| 在线观看视频一区二区欧美日韩| 福利一区二区在线| 国产成人精品免费一区二区| 精品一区二区免费视频| 久久99国产精品免费| 美女性感视频久久| 美女看a上一区| 国产不卡视频一区| 岛国av在线一区| 成人手机电影网| 成人ar影院免费观看视频| 丁香网亚洲国际| 成人激情视频网站| 成人一区二区视频| 豆国产96在线|亚洲| 成人av一区二区三区| 国产精品亚洲专一区二区三区| 豆国产96在线|亚洲| 成人免费高清视频在线观看| 成人激情小说乱人伦| 91在线你懂得| 欧美色视频在线观看| 911精品产国品一二三产区| 91麻豆精品国产91久久久久| 欧美一卡2卡3卡4卡| 亚洲精品一区二区三区香蕉| 欧美国产丝袜视频| 亚洲女同女同女同女同女同69| 亚洲人xxxx| 日日噜噜夜夜狠狠视频欧美人| 免费在线看成人av| 国产乱码精品一品二品| jvid福利写真一区二区三区| 国产综合色视频| 色噜噜久久综合| 91精品国产色综合久久| 久久久www成人免费毛片麻豆| 亚洲欧洲另类国产综合| 国产传媒久久文化传媒| 粉嫩aⅴ一区二区三区四区| 91视频国产观看| 91精品国产欧美一区二区成人| 日韩视频一区在线观看| 国产精品视频看| 亚洲国产日韩a在线播放性色| 日韩有码一区二区三区| 国产不卡高清在线观看视频| 欧洲av一区二区嗯嗯嗯啊| 精品精品国产高清一毛片一天堂| 久久婷婷色综合| 美脚の诱脚舐め脚责91| 99精品视频免费在线观看| 3751色影院一区二区三区| 国产精品麻豆网站| 免费一区二区视频| 99久久国产免费看| 欧美成人vps| 亚洲图片激情小说| 懂色av中文一区二区三区| 欧美精品色综合| 国产精品久久久久影视| 日本系列欧美系列| 一本到一区二区三区| 精品国产精品网麻豆系列| 亚洲精品久久嫩草网站秘色| 午夜精品免费在线观看| 成人国产精品免费观看视频| 欧美一卡在线观看| 亚洲综合丝袜美腿| 成人免费视频国产在线观看| 欧美一级搡bbbb搡bbbb| 亚洲一卡二卡三卡四卡五卡| youjizz国产精品| 欧美日韩成人在线| 午夜亚洲福利老司机| 99精品视频一区二区三区|