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

首頁 > 編程 > .NET > 正文

ASP.NET立即上手教程(14)_.Net教程

2024-07-10 12:50:18
字體:
供稿:網(wǎng)友

推薦:ASP.NET立即上手教程(13)
利用商務(wù)對象來工作在商務(wù)組件中封裝邏輯是實際應(yīng)用程序,比如基于web的應(yīng)用以及其他應(yīng)用中,必不可少的部分。在ASP.NET中,商務(wù)對象是多層WEB應(yīng)用程序內(nèi)建的塊。應(yīng)用程序的 /Bin目錄

創(chuàng)作自定義服務(wù)器控件

本章的內(nèi)容演示高級開發(fā)者如何書寫ASP.NET頁面中的服務(wù)器控件。通過書寫自定義的服務(wù)器控件,可以封裝定制的用戶接口以及其他功能。本教程通過一系列逐漸展開的例子提供了創(chuàng)作自定義控件的入門知識。關(guān)于控件創(chuàng)作的更多信息,參閱.NET Framework SDK文檔中“開發(fā)ASP.NET服務(wù)器控件”部分。

重要提示:本章表述的控件盡管可以在ASP.NET頁面的運行時刻正常運行,但是在頁面開發(fā)工具,如Microsoft Visual Studio.NET,設(shè)計時卻有可能無法正常工作。為了在設(shè)計器中正常工作,自定義控件需要應(yīng)用設(shè)計時刻屬性----該屬性在本章不進行表述。關(guān)于設(shè)計時刻屬性的細節(jié),參閱SDK文檔中“組件的設(shè)計時刻屬性”部分。

開發(fā)一個簡單的自定義控件

開始創(chuàng)作自己的ASP.NET服務(wù)器控件其實很容易。要想建立一個自定義控件,你需要做的全部工作僅僅是定義一個從System.Web.UI.Control繼承而來得類,并且覆蓋它的Render方法。Render方法帶有一個System.Web.UI.HtmlTextWriter類型的參數(shù)。控件需要發(fā)送到客戶端的HTML代碼作為字符串參數(shù)傳遞給HtmlTextWriter的Write方法。

定義簡單的屬性

屬性類似于“聰明”的字段,它具有存取器方法。你可能從你的控件中expose屬性而不是公共字段,因為屬性允許數(shù)據(jù)隱藏,可以版本控制,并且可以被可視化設(shè)計工具所支持。屬性具有g(shù)et/set存取器方法,用來設(shè)置和取得屬性值,并允許在必要的時候執(zhí)行額外的程序邏輯。

下面的例子展示如何增加簡單的屬性,它對應(yīng)私有數(shù)據(jù)類型,如整數(shù)、布爾和字符串。這個例子定義了三個屬性:Message是字符串類型、MessageSize是枚舉類型、Iterations是整數(shù)類型的。請注意設(shè)置簡單屬性和枚舉屬性的ASP.NET頁面語法。

定義類屬性

如果類A的屬性類型是類B,那么B的屬性被稱為A的子屬性。下面的例子定義了一個自定義服務(wù)器控件SimpleSubProperty,它有一個Format類型的屬性。Format是一個具有兩個私有屬性的類:Color和Size ,他們依次成為了SimpleSubProperty的子屬性

注意ASP.NET具有特定的語法來設(shè)定子屬性。下面的代碼顯示了如何顯式設(shè)置SimpleSubProperty的子屬性Format.Color和Format.Size。“-”語法表示子屬性。

<SimpleControlSamples:SimpleSubProperty Message="Hello There" Format-Color="red" Format-Size="3" runat=server/>

找回內(nèi)部的內(nèi)容

每個控件都有一個從System.Web.UI.Control繼承的Controls屬性。這是一個集合屬性,表示控件的子控件。如果一個控件沒有用ParseChildrenAttribute或者ParseChildrenAttribute(ChildrenAsProperties = false)標(biāo)識,那么當(dāng)控件在頁面中聲明的時候,ASP.NET頁面框架就會應(yīng)用下面的解析邏輯。如果解析器在控件的標(biāo)簽中遇到嵌套控件,它就會建立控件實例,并將其添加到控件的Controls屬性。標(biāo)簽間的文字文本被添加為LiteralControl。任何其他嵌套元素產(chǎn)生一個解析錯誤。

下面的例子展示了一個自定義控件SimpleInnerContent,通過檢查LiteralControl是否被添加到它的控件集合中,來決定是否將交付的文本增加到它的標(biāo)簽之間。如果是,它就取得LiteralControl的Text屬性,然后將其添加到輸出字符串。

重要提示:如果你的自定義控件從WebControl衍生而來,它將不會有上面例子中描述的解析邏輯,因為WebControl用ParseChildrenAttribute(ChildrenAsProperties = true)標(biāo)記,它導(dǎo)致不同的解析邏輯。關(guān)于ParseChildrenAttribute的更多信息,請參閱.NET Framework SDK文檔。

開發(fā)復(fù)合控件

你可以使用類的合成,通過組合現(xiàn)在有的控件來創(chuàng)作新的控件。復(fù)合控件類似于用戶控件,也是使用ASP.NET語法來創(chuàng)建。用戶控件和復(fù)合控件的主要區(qū)別是:用戶控件是擴展名為.ascx的文本文件,而組合控件是編譯過的,已匯編的方式使用。

開發(fā)組合控件的關(guān)鍵步驟是:

· 覆蓋從Control繼承的保護型方法CreateChildControls,建立子控件的實例,并將其添加到控件集合。

· 如果頁面中的復(fù)合控件實例需要重復(fù)創(chuàng)建,需要引入System.Web.UI.INamingContainer接口。這是一個沒有方法的標(biāo)簽接口。當(dāng)他被控件引入的時候,ASP.NET將在這個控件下面建立一個新的名稱空間。這就保證了子控件在控件的繼承樹中具有唯一的ID。

你不必覆蓋Render方法,因為子控件提供了交付邏輯。你可以引申子控件合成的屬性。

下面的例子定義了一個復(fù)合控件Composition1,它合并了System.Web.UI.LiteralControl和System.Web.UIWebControls.TextBox.Composition1,引申了一個整數(shù)類型的自定義屬性Value,映射TextBox到的Text屬性。

分享:ASP.NET立即上手教程(12)
數(shù)據(jù)訪問和定制模板控件介紹前面幾個章節(jié)演示的DataGrid控件,對于許多需要使用類似表格那樣來展示數(shù)據(jù)的web應(yīng)用程序來說是非常適合的。但許多時候,需要用更豐富的形式來顯示數(shù)據(jù)。Asp.n

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湘乡市| 高雄县| 龙里县| 红河县| 辽宁省| 灵璧县| 龙游县| 建瓯市| 莲花县| 大同县| 金昌市| 衡山县| 区。| 淮滨县| 丹凤县| 县级市| 四子王旗| 都江堰市| 札达县| 高要市| 辉南县| 通山县| 闸北区| 农安县| 安远县| 杭州市| 南开区| 遂昌县| 台中市| 清水县| 红河县| 阿坝| 奉新县| 辉县市| 墨竹工卡县| 汾西县| 娄烦县| 余姚市| 仁化县| 廉江市| 眉山市|