国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET控件開發基礎的總結詳解

開發 后端
ASP.NET控件開發基礎的總結都有哪些需要注意的么?ASP.NET控件開發基礎的總結中向你介紹這方面的內容。

ASP.NET控件開發基礎的總結1.1何處繼承

自定義控件一般從以下幾個基類(此處不包含數據控件)

一.Control類(所有服務器控件的基類,算是比較底層的類,如果控件功能比較簡單,要求不多,可直接繼承此類.)

二.WebControl類(標準控件的基類,繼承此類,你可以繼承其豐富的公共屬性,若標準控件中的控件沒有你需要的控件,你可以繼承此類)

三.CompositeControl 類(2.0新增的類,此類繼承自WebControl類,如果你需要制作復合控件,請從繼承此類開始)

四.直接從內置控件繼承(我們知道輪子只需要發明一遍,你的需求跟內置差不多的話,請考慮這么做)

ASP.NET控件開發基礎的總結1.2呈現控件

Control類Render方法為基本呈現方法,RenderContent方法是在Render方法之上的,其為控件加了一個標簽,我認為RenderContent方法是為WebControl類中屬性準備的.基本的方法繼續深刻的去了解.

ASP.NET控件開發基礎的總結1.3與用戶交互

純粹的呈現控件還不夠,我們需要傳遞數據,這就必然讓我們了解自定義控件事件處理

ASP.NET控件開發基礎的總結1.4接觸屬性

屬性相對而言比較簡單,也比較好理解,但其又比較麻煩.當控件屬性太多,很容易亂,因此我們又認識了元數據,把屬性進行了分類,如下圖 

屬性進行了分類 

為了更清晰了,把屬性分好類別,我們又用另外做法,把多種同類型的屬性,定義在一個大的屬性里面,稱之為復雜屬性,如下圖

復雜屬性 

屬性已經夠多了,不緊如此,我們還知道屬性的每種類型可能不一樣,而在呈現之后都是呈現字符串形式,簡單屬性.net已為你處理好轉換,當你自定義復雜屬性以后,你則需要自己為你定義的復雜屬性定義一個類型轉換器

屬性還有另外一種做法,就是可以把屬性當成集合屬性來用.可以說是特殊話的復雜控件,這樣做可以提供給一些列表控件使用(見第10篇) 屬性用途還真不少

ASP.NET控件開發基礎的總結1.5控件樣式

控件怎么能缺樣式,我們自然需要它,在此我們再次認識到了WebControl類.當然也了解到了Style類及其子類
,只要你了解了其中的幾個方法你就可以自定義控件樣式了

ASP.NET控件開發基礎的總結1.6復合控件

復合控件的功能往往比較強大,它利用當前已經存在的控件進行組裝成一個新的控件,在此過程中我們學習了在復合控件中定義事件以及定義樣式.

ASP.NET控件開發基礎的總結1.7視圖狀態

不得不談的一個話題

一般我們為控件定義的屬性都以視圖狀態的形式保存,然而復雜屬性的定義和控件樣式定義則需要你了解如何自定義視圖狀態

***我們還討論了如何為控件添加客戶端功能,還有為控件定義生成器.好了,總結終于告一段落,以上寫了兩遍,***遍寫的時候保存后數據居然丟失了,痛苦啊.

下面我們分享一些小技巧,或許大家早已經知道了,為了以后更好的學習,我把命名控件全部更改為AspDemo.CustomComponents

此次下載的源碼包括1-16篇的全部的示例代碼,如果有什么錯誤還請大家指出

ASP.NET控件開發基礎的總結補充:

ASP.NET控件開發基礎的總結補充一.嵌入資源的使用

1.嵌入控件圖標

內置控件都有自己的圖標,很多人也很喜歡為自己的控件做個圖標,那如何做呢?

內置控件圖標 

我們只需要使用ToolboxBitmap元數據就可以了,你需要了解其構造函數,用法如下

  1. namespace AspDemo.CustomComponents  
  2. {  
  3.         [ToolboxBitmap(typeof(ImageControl), "Resources.Image.bmp")]  
  4.    public class ImageControl : WebControl  
  5.     {  
  6.     }  

注意點:

(1)圖標的位置位于,以你默認命名空間為根目錄,以點語法的方式來指定圖標位置,(即圖標路徑為/Resources)否則的話以你控件類型命名控件為根目錄,(即圖標路徑為CustomComponents/Resources),大家可以嘗試一下

(2)在屬性面板指明圖標文件為嵌入的資源,如下圖

屬性面板指明圖標文件 

2.嵌入其他資源文件

記得以前我們做了一個控件需要一個js文件,當需要使用這個控件的話,則也需要使用js文件,這樣給別人用的話很不方面,我們可以把js文件作為嵌入資源使用來解決這一問題.以下例子來自MSDN,這里只是讓大家知道如何使用

  1. [assembly: WebResource("AspDemo.CustomComponents.Resources.
  2. AspDemo.CustomComponents.ResourceLabel.image1.jpg""image/jpeg")]  
  3. [assembly: WebResource("AspDemo.CustomComponents.Resources.
  4. AspDemo.CustomComponents.ResourceLabel.help.htm""text/html"
  5. PerformSubstitution = true)]  
  6. namespace AspDemo.CustomComponents  
  7. {  
  8.  
  9.     public class ResourceLabel : Control  
  10.     {  
  11.         protected override void CreateChildControls()  
  12.         {  
  13.  
  14.             // Create a new Image control.  
  15.             Image _img = new Image();  
  16.             //獲取資源文件引用  
  17.             _img.ImageUrl = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), 
  18. "AspDemo.CustomComponents.Resources.AspDemo.
  19. CustomComponents.ResourceLabel.image1.jpg");  
  20.             this.Controls.Add(_img);  
  21.  
  22.             // Create a new Label control.  
  23.             Label _lab = new Label();  
  24.             _lab.Text = "A composite control using the WebResourceAttribute class.";  
  25.             this.Controls.Add(_lab);  
  26.  
  27.             // Create a new HtmlAnchor control linking to help.htm.  
  28.             HtmlAnchor a = new HtmlAnchor();  
  29.             a.HRef = this.Page.ClientScript.GetWebResourceUrl(typeof(ResourceLabel),
  30.  "AspDemo.CustomComponents.Resources.AspDemo.CustomComponents.ResourceLabel.help.htm");  
  31.             a.InnerText = "help link";  
  32.             this.Controls.Add(new LiteralControl("﹤/br﹥"));  
  33.             this.Controls.Add(a);  
  34.  
  35.         }  
  36.     }  

注意點:

(1)跟上面第二點一樣

(2)路徑為以默認命名空間為根路徑,然后以點語法獲取文件路徑(AspDemo.CustomComponents為命名空間,Resources為文件夾,AspDemo.CustomComponents.ResourceLabel.help.htm此為文件名稱)

OK,這樣就算完成了

ASP.NET控件開發基礎的總結補充二.持久性控件狀態

下面也只給出部分代碼(來自MSDN),這方面資料我相信已經很多了,只當補充

  1. protected override void OnInit(EventArgs e)  
  2. {  
  3.     base.OnInit(e);  
  4.     Page.RegisterRequiresControlState(this);  
  5. }  
  6.  
  7. protected override object SaveControlState()  
  8. {  
  9.  
  10.     object obj = base.SaveControlState();  
  11.  
  12.     if (indexValue != 0)  
  13.     {  
  14.         if (obj != null)  
  15.         {  
  16.             return new Pair(obj, indexValue);  
  17.         }  
  18.         else 
  19.         {  
  20.             return (indexValue);  
  21.         }  
  22.     }  
  23.     else 
  24.     {  
  25.         return obj;  
  26.     }  
  27. }  
  28.  
  29. protected override void LoadControlState(object state)  
  30. {  
  31.     if (state != null)  
  32.     {  
  33.         Pair p = state as Pair;  
  34.         if (p != null)  
  35.         {  
  36.             base.LoadControlState(p.First);  
  37.             indexValue = (int)p.Second;  
  38.         }  
  39.         else 
  40.         {  
  41.             if (state is int)  
  42.             {  
  43.                 indexValue = (int)state;  
  44.             }  
  45.             else 
  46.             {  
  47.                 base.LoadControlState(state);  
  48.             }  
  49.         }  
  50.     }  

ASP.NET控件開發基礎的總結補充三.客戶端回調

ASP.NET Unleashed單獨列出了一章來講JavaScript在自定義控件中的使用,我想大家還是看書上例子吧,個人感覺很好,非常容易理解.而且學會這個的話,還可以看的懂AtlasControlToolkit里面的幾個控件,幾乎都用到了這種技術.

ASP.NET控件開發基礎的總結補充四.配置文件

(1)在web.config中預先定義控件標簽和注冊控件,從而可以在每個頁面省去
使用 @ Register 指令

  1. ﹤pages﹥  
  2.   ﹤controls﹥  
  3.  
  4.     ﹤add tagPrefix="aspDemo" namespace="AspDemo.CustomComponents" assembly="AspDemo.CustomComponents"/﹥  
  5.   ﹤/controls﹥  
  6.  
  7. ﹤/pages﹥ 

(2)控件映射

URL可以映射,控件也可以,我們在配置Ajax環境的時候就用到了此方法

  1. ﹤pages﹥  
  2.  ﹤tagMapping﹥  
  3.         ﹤add tagType="System.Web.UI.WebControls.RequiredFieldValidator" 
  4. mappedTagType="System.Web.UI.Compatibility.RequiredFieldValidator, 
  5. System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/﹥  
  6.                 ﹤/pages﹥ 

五.在工具欄上隱藏控件

再講一個小東西,當定義的控件,不需要在工具欄上顯示的話,可以用此元數據把控件隱藏起來

  1. [ToolboxItem(false)]  
  2.        public class ImageControl : WebControl  
  3.     {  
  4.     } 

好了,寫完這一篇了,如哪里有錯誤還請大家指出,以上全憑經驗寫的。

ASP.NET控件開發基礎的總結和相關ASP.NET控件開發基礎的總結補充就向你介紹到這里,希望對你了解ASP.NET控件開發基礎更進一步。

【編輯推薦】

  1. ASP.NET控件開發基礎之實現控件集合屬性
  2. ASP.NET控件開發基礎之自定義視圖狀態管理
  3. ASP.NET控件開發基礎之為子控件添加樣式
  4. ASP.NET控件開發基礎之服務器控件客戶端功能
  5. ASP.NET控件開發之控件生成器淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-04 10:43:59

ASP.NET控件開發

2009-08-17 09:24:25

ASP.NET控件

2009-08-19 13:44:00

ASP.NET Lis

2009-08-06 18:18:27

ASP.NET控件開發ASP.NET復合控件

2009-07-24 10:14:22

ASP.NET開發

2009-08-07 13:31:41

ASP.NET控件開發

2009-08-07 10:34:56

ASP.NET控件開發

2011-04-19 10:33:16

ASP.NET自定義控

2009-08-06 13:08:23

ASP.NET控件開發

2009-08-06 09:18:01

ASP.NET自定義控ASP.NET控件開發

2009-08-07 15:24:16

ASP.NET模板控件

2009-07-29 17:32:00

ASP.NET Mul

2009-07-27 14:50:24

ChartAreas控ASP.NET 3.5

2009-07-24 15:07:56

ASP.NET上傳文件

2009-08-04 13:10:05

ASP.NET服務器控

2009-08-06 18:32:00

ASP.NET控件開發ASP.NET復合控件

2009-07-27 13:52:36

Panel控件ASP.NET

2009-08-04 12:59:42

ASP.NET控件開發

2009-08-07 15:34:15

ASP.NET數據綁定

2009-08-03 15:53:11

ASP.NET移動開發
點贊
收藏

51CTO技術棧公眾號

天堂中文8资源在线8| 久久久久久久高潮| 欧美mv和日韩mv的网站| 污污网站免费看| 91片黄在线观看| 午夜午夜精品一区二区三区文| 国产精品久久久久9999赢消| 97久久久免费福利网址| 欧一区二区三区| 操人视频在线观看欧美| 国产国产一区| 日韩中文娱乐网| 国产精品99| 中文字幕亚洲二区| 免费福利视频一区二区三区| 精品国产一区二区亚洲人成毛片| 毛片在线视频| 欧美美女一区二区三区| 成年人视频在线看| 欧美日韩中字一区| 伊人免费在线| 69堂成人精品免费视频| h视频在线免费观看| 56国语精品自产拍在线观看| 丝袜美腿美女被狂躁在线观看| 在线欧美一区二区| 在线观看黄av| 亚洲成人av片在线观看| 成人黄色动漫| 一区二区三区美女xx视频| 日本另类视频| 色综合久久88| 九九精品久久| 99精品99久久久久久宅男| 亚洲日韩成人| 亚洲一区二区三区精品动漫| 国产精品一区二区无线| 日韩欧美在线播放视频| 18成人在线观看| 色综合成人av| 欧美成人激情免费网| 美女18一级毛片一品久道久久综合| 亚洲人a成www在线影院| 亚洲1区在线| 国产日韩精品一区二区| 国产欧美精品| 国产女教师bbwbbwbbw| 亚洲国产成人一区二区三区| 一本到av在线| 精品欧美黑人一区二区三区| 成人午夜毛片| 国产精品极品尤物在线观看 | 欧美亚洲综合网| 欧美24videosex性欧美| xxx欧美精品| 爽成人777777婷婷| 日韩精品资源| 国产日韩综合av| 成人性生交大片免费看午夜 | 免费在线成人网| 日本久久久精品视频| 午夜在线成人av| www.8ⅹ8ⅹ羞羞漫画在线看| 欧美激情高清视频| 韩日在线一区| av免费在线播放网站| 在线亚洲人成电影网站色www| 中老年在线免费视频| 国产精品第1页| 国产在线视频精品一区| 中文字幕日产av一二三区| 亚洲精品在线免费播放| 国产精品x8x8一区二区| 精品无码久久久久久久动漫| 久久综合中文字幕| 最新真实国产在线视频| 欧美福利小视频| 亚洲欧美久久久| av网站免费| 亚洲视频精品在线| 综合久久十次| 成人免费视频久久| 欧美成人video| 日韩毛片视频| 国产91xxx| 91精品国产综合久久精品| 成人搞黄视频| 亚洲一区二区三区午夜| 欧美日韩国产精品一区二区三区四区| 345成人影院| 国产91aaa| **网站欧美大片在线观看| 九色porny自拍视频在线播放| 国产欧美日韩视频| 久久久久久一级片| 538在线精品| 亚洲自拍小视频免费观看| 91香蕉视频污在线| 密臀av在线| 成人免费看片网址| 亚洲欧美日韩国产另类专区 | 欧美一级黄色影院| 亚洲第一精品夜夜躁人人爽| 成人在线免费观看视频| 乱人伦xxxx国语对白| 日韩精品一区二区三区四区 | 国产精品视频色| 国产欧美日韩三级| 成人美女大片| 欧美日韩在线观看一区二区三区| 一区二区在线观看免费视频播放| 91精品亚洲一区在线观看| 日本一区二区精品视频| 精品久久久中文| 人妖一区二区三区| 成年人免费大片| 日韩在线欧美在线| 国产宾馆实践打屁股91| 丰乳肥臀在线| 视频一区不卡| 欧美成人一区二区三区在线观看| 亚洲网站在线| 国产资源在线观看| 亚洲一区亚洲二区| 一区二区三区色| 亚洲+变态+欧美+另类+精品| 日日碰狠狠丁香久燥| 久久亚洲精品网站| 91丨九色丨国产丨porny| 欧美精品总汇| 91.com在线| 日韩在线免费视频观看| 国产1区2区3区精品美女| 涩涩在线视频| 激情成人开心网| 最近2019中文免费高清视频观看www99 | 欧美色综合网| 一级二级在线观看| 91精品视频在线看| 欧美视频免费在线观看| 亚洲91久久| 一级日本在线| 亚洲一区二区三区午夜| 国产亚洲一区精品| 波多野结衣亚洲一区| 欧美激情三级| 在线看片地址| 国产精品自产拍在线观| 黄色一区二区三区| 一区二区三区在线电影| 免费观看在线黄色网| 欧美日韩一区二区三| 亚洲男人天堂久| 久久久精品影视| 精品久久久久久久久久久下田| 在线播放你懂得| 蜜桃视频日韩| 亚洲香蕉在线观看| 国产日产欧美一区二区三区| 国产日产一区| 伊人免费在线| 国产精品视频网站在线观看| 欧美激情第99页| 欧美性高潮床叫视频| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲激情在线观看视频| 国产成人精品免高潮在线观看| 色妹子一区二区| 人妖欧美一区二区| 成人全视频免费观看在线看| 欧美精品久久久久久久久25p| 91在线视频成人| 亚洲国产成人爱av在线播放| 99精品国产一区二区三区不卡| 少妇高潮一区二区三区| 色播色播色播色播色播在线 | 91传媒久久久| 亚洲一区国产精品| 亚洲欧美日韩天堂一区二区| |精品福利一区二区三区| 亚洲清纯自拍| 成人在线高清| 在线资源av| 91免费国产精品| 成人网欧美在线视频| 亚洲精品一区二区在线观看| 国产精品久久一卡二卡| 9色精品在线| www.爱久久| 丁香高清在线观看完整电影视频 | 92国产精品观看| 亚洲精品成人影院| 成人看片毛片免费播放器| 在线伊人免费视频| 99热久久这里只有精品| 国产精品久久久久久影视| 日韩激情片免费| 性做久久久久久久久| 丁香啪啪综合成人亚洲小说| 久久激情电影|