創(chuàng)建服務(wù)器控件(PPT 47頁).ppt_第1頁
創(chuàng)建服務(wù)器控件(PPT 47頁).ppt_第2頁
創(chuàng)建服務(wù)器控件(PPT 47頁).ppt_第3頁
創(chuàng)建服務(wù)器控件(PPT 47頁).ppt_第4頁
創(chuàng)建服務(wù)器控件(PPT 47頁).ppt_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、創(chuàng)建服務(wù)器控件,議程,回顧架構(gòu) 創(chuàng)建服務(wù)器控件 控件屬性 觸發(fā)事件 使用客戶端腳本 重載Render 組合控件,ASP.NET中的控件,什么是 ASP.NET控件?,服務(wù)器端Web UI 組件 屬性,方法, 事件 演繹成標(biāo)注 (HTML, XML, script, etc.) 處理 posted 數(shù)據(jù)和用戶行為 封裝邏輯 多種演繹選項 一個控件是一個.NET 類型, 基類是 System.Web.UI.Control System.Web.UI.WebControls.WebControl,兩種創(chuàng)建控件的方法,用戶控件(頁面作為控件) 容易創(chuàng)建 是存作 *.ascx的頁面 支持部分頁面緩存 用

2、于單個應(yīng)用 缺少設(shè)計時支持 定制控件 技術(shù)要求高一些 支持多個應(yīng)用 (GAC) 設(shè)計時支持非常強大,基于Tag的存儲,運行時解析Tags 創(chuàng)建控件實例 設(shè)置屬性初始值, first item second item third item ,運行時使用控件,控件是代碼中的.NET 對象 在頁面事件中處理控件 Page_Load, Button1_Click, 等等.,void Page_Load(object send, EventArgs e) l1.Items.Add(“fourth item”); l1.ForeColor = Color.Blue; ,頁面/控件處理第一次載入,Init,

3、Load,PreRender,SaveViewState,Render,Dispose,實例化每個控件, 設(shè)置為初始狀態(tài), 加入控件樹,運行用戶代碼, 測試 !IsPostBack條件來數(shù)據(jù)綁定到第一批值,CreateChildControls() 確??丶?zhǔn)備好被演繹,控件存儲狀態(tài)值(如果與初始值不同),每個控件將自身演繹到響應(yīng)中,釋放頁面和所有控件,頁面/控件處理Post back,Init,Load,PreRender,SaveViewState,Render,Dispose,從ViewState載入控件的上一次狀態(tài),Posted 數(shù)據(jù) (HTTP 表單中) 傳遞到相應(yīng)控件,按照在樹中的

4、次序觸發(fā)控件事件, 除了導(dǎo)致Post的控件. 它最后觸發(fā).,LoadViewState,Postback data,Postback events,控件屬性,屬性處理,控件類型屬性 作為控件的特性出現(xiàn) 屬性可以 : 類型成員 存儲在 ViewState中,EventLog控件,觸發(fā)事件,SimpleLinkButton,往 SimpleLabel控件加入事件 將流覽器客戶事件映射到服務(wù)器事件 用 Page.GetPostBackClientHyperLink()產(chǎn)生Postback 實現(xiàn) IPostBackEventHandler,ASP.NET 服務(wù)器應(yīng)用,觸發(fā)服務(wù)器端事件,將流覽器客戶事件

5、映射到服務(wù)器事件,Click!,SimpleLinkButton,客戶端腳本,HoverLabel控件,增加客戶端hover 和cursor 效果 使用Page.RegisterStartupScript 來演繹加入的腳本 設(shè)置一個特定的版本 AssemblyVersion 特性 (未在演示中) 將腳本放在一個共享的地方 /aspnet_client/assembly/version/script.js,客戶端腳本支持,提供 EnableClientScript 屬性 使用BrowserCapabilities 來確定流覽器是否支持腳本 Page.Request.Browser.EcmaScr

6、iptVersion 在 OnPreRender時作此檢驗 因此檢驗不在設(shè)計模式時進行,HoverLabel,重載Render,ProgressBar控件,演繹成 HTML 表 從 WebControl繼承 “免費”獲取許多實現(xiàn) VS.NET中的設(shè)計器支持 重載Render(),重載Render,Override Render protected override void Render() writer.Write(Text); 或者只是內(nèi)容的演繹: protected override void RenderContents() foreach (ListItem li in Items)

7、 RenderListItem(output, li); ,演繹屬性,從 WebControl繼承的控件 在開始標(biāo)記中演繹風(fēng)格屬性 基本的uplevel/downlevel 風(fēng)格支持 也可以 增加新的屬性 protected override void AddAttributesToRender() / add another attibute for the begin tag writer.AddAttribute(type, square); base.AddAttributesToRender(writer); ,ProgressBar,組合控件,組合控件,組合控件是 包含其它控件的控

8、件 一起解決常見問題 組合控件必須 為命名空間實現(xiàn)INamingContainer 重載CreateChildControls() 來根據(jù)需要創(chuàng)建子控件 子控件管理它們自己的視圖狀態(tài),CreateChildControls,確保控件樹已準(zhǔn)備好 PreRender FindControl 在 CreateChildControls 創(chuàng)建子控件, 設(shè)置初始屬性值 對每個請求給予相同的初始值 在加入控件樹之前賦初始值 加入Controls集合 連接事件處理函數(shù),CreateChildControls(),protected overrides void CreateChildControls() T

9、extBox text1 = new TextBox(); text1.ID = text1“; text1.Text = “Text”; RequiredFieldValidator req1 = new RequiredFieldValidator(); req1.ControlToValidate = text1“; req1.Text = *“; Controls.Add(text1); Controls.Add(new LiteralControl( ,RequiredTextField控件,在VS.Net中開發(fā)服務(wù)端控件,建立一個Web控件庫項目 編輯AssemblyInfo類型

10、Version TagPrefix 加入一個Web應(yīng)用來測試控件 Solution-Add New-Web Application 加到ToolBox中 Customize ToolBox-Browse,使用RequiredTextField控件,總結(jié),控件提供了 抽象 重用 ASP.NET 提供了豐富的控件框架 在Posts之間保持狀態(tài) 處理Post事件 從腳本處獲得客戶端處理能力 從現(xiàn)有的 ASP.NET控件繼承,使用模板,模板化控件,定制控件外觀 實現(xiàn) ITemplate 模板初始化由Parser進行 ITemplate:InstantiateIn 控件通常會實現(xiàn)INamingConta

11、iner 載入模板 缺省模板,控件內(nèi)部所有 內(nèi)聯(lián)模板,控件內(nèi)定義 動態(tài)載入,使用模板,ForumRepeater : Repeater 新的屬性 內(nèi)部數(shù)據(jù)綁定 模板 實現(xiàn)定制的ItemTemplate 可重載初始值,使用模板,控件Skinning,Skinning 控件,不包含 UI/Markup 由Skin控制 控件標(biāo)簽(XML, HTML, 等等) 控件UI (標(biāo)簽布局) 一個skin 文件是 一個 .ascx文件 動態(tài)載入 可以有代碼,Skinning Controls,設(shè)計時支持,創(chuàng)建一個控件設(shè)計器,從 System.Web.UI.Design.ControlDesigner繼承 與

12、DesignerAttribute關(guān)聯(lián), Designer(typeof(AspConn.ControlsCS2. ContentRotatorDesigner) public class ContentRotator : WebControl ,設(shè)計時演繹,設(shè)計時必須用HTML表示 (不管在運行時如何演繹) 缺省情形下用Render() 的結(jié)果 重載 GetDesignTimeHtml() GetEmptyDesignTimeHtml() 當(dāng)Render返回空字符串時 GetErrorDesignTimeHtml() 當(dāng)無法載入控件時,設(shè)計時支持,Firing The Client Even

13、t,Create script reference using Page.GetPostBackClientHyperlink(); Client Implementation: _doPostBack(),ctl,protected override void Render(writer) string eventRef = Page.GetPostBackClientHyperlink(this,”); writer.AddAttribute(HtmlTextWriterAttribute.Href, eventRef); writer.RenderBeginTag(HtmlTextWriterTag.A); RenderContents(writer); writer.RenderEndTag(); ,Processing The Server Event,Control must implement IPostBackEventHandler Page calls controls RaisePostBackEvent() method,public class SimpleLinkButton : SimpleLabel, IPostBackEventHandler void RaisePost

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論