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

首頁 > 編程 > .NET > 正文

ASP.NET立即上手教程(7)

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

web forms 用戶控件

用戶控件介紹

除了asp.net提供的內(nèi)建的服務(wù)器控件外,你還可以使用已經(jīng)掌握的制作web forms 頁面的技術(shù),輕松的定義自己的控件。實際上,只需要稍微改動一下,幾乎任何web forms頁面都可以作為服務(wù)器控件,在其他頁面上重復(fù)使用。(注意用戶控件的類型是system.web.ui.usercontrol, 它直接從system.web.ui.control繼承而來)。 web forms 頁面被作為服務(wù)器控件使用的時候,簡稱為用戶控件。轉(zhuǎn)變之后,通常使用.ascx擴展名來表明用戶控件。這就保證了用戶控件文件不能作為一個單獨的web form頁面來執(zhí)行(你可以明白,在用戶控件和web forms 頁面之間,有一點,但是很重要的區(qū)別)。用戶控件使用register(注冊)指令包含在web forms 頁面中:

<%@ register tagprefix="acme" tagname="message" src="pagelet1.ascx" %>

tagprefix 為用戶控件確定了唯一的名稱空間。(這樣,具有相同名字的多個用戶控件可以互相區(qū)分). tagname 的值是用戶控件的唯一名稱(你可以使用任何名字)。 src 屬性是用戶控件的虛擬路徑—例如"mypagelet.ascx" 或者 "/myapp/include/mypagelet.ascx"。 注冊用戶控件之后,你可以在web forms頁面中放置用戶控件標(biāo)簽,就像是用平常的服務(wù)器控件一樣(包含runat="server" 屬性):

<acme:message runat="server"/>

下面的例子展示了web forms頁面引入用戶控件的情況。本例中的用戶控件僅僅是一個簡單的靜態(tài)文件。

擴展用戶控件的屬性

當(dāng)web forms頁面作為用戶控件處理的時候,web forms頁面的公共字段和方法升級為公共屬性(即標(biāo)簽屬性)和公共方法(標(biāo)簽的方法)。下面的例子將上一個例子中的用戶控件進行延伸,增加了兩個公共 string字段。注意這兩個字段既可以在包含頁中直接聲明,也可以用程序來控制。

除了將公共字段升級為控件屬性外,也可以使用屬性語法。 使用屬性語法勝過為了設(shè)定或者取得屬性值而執(zhí)行代碼。下面的例子示范了一個address 用戶控件,他綁定了textbox 控件的text 屬性。這樣做的好處在于該控件“免費”繼承了textbox 控件的自動狀態(tài)管理。注意在包含web forms頁面中有兩個address 用戶控件,分別為"billing address" 和 "shipping address" 設(shè)置caption 屬性。用戶控件的真正強大之處就是這種重復(fù)利用。

用戶控件的另一個有用之處是 login 控件,用來收集用戶名和密碼。

在這個例子中,服務(wù)器驗證控件添加到了login用戶控件中

在用戶控件中封裝事件

如同普通的服務(wù)器控件一樣,用戶控件參與整個請求執(zhí)行的生命周期。這就意味著,用戶控件能夠操作自己的事件,從包含web forms頁中封裝某些頁面邏輯。

下面的例子演示了一個產(chǎn)品列表用戶控件,它在內(nèi)部處理了自己的提交返回。注意用戶控件自身沒有綁定<form runat="server">控件。因為只有一個表單控件出現(xiàn)在頁面上(asp.net不允許嵌套服務(wù)器表單),于是留給包含web forms 頁面去定義他。

用程序創(chuàng)建用戶控件

如同普通服務(wù)器控件可以用程序創(chuàng)建一樣,用戶控件也一樣。頁面的loadcontrol方法用來載入用戶控件,同時將虛擬路徑傳遞給用戶控件的源文件所在。

control c1 = loadcontrol("pagelet7.ascx");
((pagelet7cs)c1).category = "business";
page.controls.add(c1);

用戶控件的類型是由control 命令的classname 屬性所決定。例如下面的例子,一個文件名保存為"pagelet7.ascx"的用戶控件被賦值為"pagelet7cs" 強類型:

<%@ control classname="pagelet7cs" %>

因為loadcontrol 方法返回的類型是system.web.ui.control, 所以為了設(shè)置用戶控件的個別屬性,它必須拋出適當(dāng)?shù)膹婎愋汀W罱K,用戶控件加入到基本頁面的controlcollection 集合中。

重要提示 對于包含用戶控件的web forms 頁面,只有當(dāng)register 命令包含了用戶控件(即使沒有用戶控件標(biāo)簽被實際聲明),用戶控件的強類型才是可利用的。

本章小結(jié)

1、用戶控件允許開發(fā)者使用創(chuàng)建web forms頁面所使用的程序設(shè)計技術(shù),輕松的創(chuàng)建自定義控件。

2、作為與普通頁面的區(qū)別,使用.ascx 文件擴展名來表明用戶控件。這就保證了用戶控件不能像標(biāo)準(zhǔn)web forms頁面那樣執(zhí)行。

3、使用register 命令,將用戶控件包含在web forms頁面中。register 命令指定了tagprefix, tagname, 和src location。

4、注冊了用戶控件之后,就可以像對待普通服務(wù)器控件那樣,使用用戶控件(包含runat="server" 屬性)。

5、用戶控件被包含在web forms 頁面中以后,他的公共字段、屬性和方法升級為控件的公共屬性(標(biāo)簽屬性)和方法。

6、用戶控件參與每個客戶端請求的整個生命周期,并且處理自身的事件,封裝了部分包含他的web forms頁面的頁面邏輯。

7、用戶控件不能包含任何form控件。如果需要的話,可以在包含他的web form頁面中使用form控件。

8、用戶控件可以用system.web.ui.page類的loadcontrol方法用用程序來創(chuàng)建。用戶控件的類型由control 命令的classname 屬性所決定。

9、對于包含用戶控件的web forms 頁面,只有當(dāng)register 命令包含了用戶控件(即使沒有用戶控件標(biāo)簽被實際聲明),用戶控件的強類型才是可利用的。

國內(nèi)最大的酷站演示中心!
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 砚山县| 中卫市| 仁怀市| 湘阴县| 虎林市| 郁南县| 连平县| 清丰县| 桃园市| 洮南市| 滨海县| 九寨沟县| 遵化市| 长泰县| 团风县| 崇左市| 广南县| 阳信县| 绥芬河市| 定陶县| 军事| 富宁县| 阿合奇县| 安仁县| 鄂托克前旗| 宜川县| 云梦县| 岳阳县| 屏山县| 阜康市| 正镶白旗| 大荔县| 夹江县| 定襄县| 伊宁县| 徐闻县| 本溪市| 商丘市| 揭东县| 洛浦县| 明星|