複製鏈接
請複製以下鏈接發送給好友

窗體控件

鎖定
Active Server Pages+ (ASP+) 框架,也稱為 Web 窗體,可用來創建可編程的網頁,以便將它們作為總體 Web 應用程序的組成部分。Web 窗體在以下方面簡化了 Web 應用程序的開發: 在服務器上提供了基於事件的編程模式,這類似於像 Microsoft Visual Basic® 開發系統這樣的基於 Microsoft® Win32® 的開發工具中所使用的、基於表單的開發模式。
中文名
窗體控件
外文名
Active Server Pages
別    名
網頁
畢業院校
Web 窗體
職    業
框架
代表作品
Microsoft Visual Basic&

窗體控件WEB窗體

允許 HTML 標記與應用程序邏輯的完全分離。邏輯,即頁面後的代碼,是經過編譯的,因而其性能得到了大大提高。
支持控件和 NET 組件組,提供了統一的、對類型安全的對象模型。此外,該框架還通過定製組件或第三方組件使自身自然適應擴展性的需要。
實現為該框架的組成部分的服務器控件。ASP+ 的其它方面,如緩存、安全、配置和定製,也同樣重要。服務器控件用於創建 Web 應用程序的用户界面。它們可以生成適用於目標設備或瀏覽器的任何輸出。在 ASP+ 框架中有兩組服務器控件:“HTML 控件”和“Web 控件”,這兩組控件都能提供用於 Web 瀏覽器的 HTML。除了提供 HTML 之外,它們還封裝有在往返行程中保留狀態以及為各種客户機事件產生服務器端事件的機制。同時,它們還能用作複合控件的組成部分。

窗體控件HTML 控件

ASP+ 框架中的第一組控件稱為 HTML 控件。這些控件位於 System.Web.UI.HtmlControls 命名空間中,是從 HtmlControl 基類中直接或間接派生出來的。
對於任何包含 runat="server" 屬性的標記,都會為其生成 HTML 控件的實例。例如,下面的 HTML 可創建一個名為“textBox1”的 HtmlInputText 控件的實例:
<input type="text" runat="server" id="textBox1" value="some text">
下表中列出了 HTML 控件以及對應的 HTML 標記。
表 1. HTML 控件標記
控件 對應的標記
HtmlAnchor <a>
HtmlButton <button>
HtmlSelect <select>
HtmlTextArea <textarea>
HtmlInputButton <input type="button">
HtmlInputCheckBox <input type="check">
HtmlInputRadioButton <input type="radio">
HtmlInputText <input type="text"> 和 <input type="password">
HtmlInputHidden <input type="hidden">
HtmlInputImage <input type="image">
HtmlInputFile <input type="file">
HtmlForm <form>
HtmlImage <img>
HtmlTable <table>
HtmlTableRow <tr>
HtmlTableCell <td>
HtmlGenericControl 任何其它沒有對應控件的標記,如 <span>、<div> 等。

窗體控件Web 控件

ASP+ 框架中的第二組服務器控件稱為 Web 控件。這些控件位於 System.Web.UI.WebControls 命名空間中,是從 WebControl 基類中直接或間接派生出來的。
Web 控件中包括傳統的表單控件,如 TextBox 和 Button ,以及其它更高抽象級別的控件,如 Calendar 和 DataGrid 控件。它們提供了一些能夠簡化開發工作的特性,其中包括:
對象模型:WebControl 基類實現了對所有控件通用的大量屬性,這些屬性包括 ForeColor、BackColor、Font、Enabled 等。。通過這些組件實現的具有明確類型的對象模型將有助於減少編程錯誤。
瀏覽器的自動檢測:Web 控件能夠自動檢測客户機瀏覽器的功能,並相應地調整它們所提交的 HTML,從而充分發揮瀏覽器的功能。
數據綁定:在 Web 窗體頁面中,可以對控件的任何屬性進行數據綁定。此外,還有幾種 Web 控件可以用來提交數據源的內容。
在 HTML 標記中,Web 控件會表示為具有命名空間的標記,即帶有前綴的標記。前綴用於將標記映射到運行時組件的命名空間。標記的其餘部分是運行時類自身的名稱。與 HTML 控件相似,這些標記也必須包含 runat="server" 屬性。下面是一個聲明的示例:
<asp:TextBox id="textBox1" runat="server" Text="[Entry Keywords]"></asp:TextBox>
在上例中,“asp”是標記前綴,會映射到 System.Web.UI.WebControls 命名空間。

窗體控件文本顯示

Label 控件用於在頁面中顯示只讀的靜態文本或數據綁定的文本:
<asp:Label runat="server" Text="Label1" Font-Italic="true"></asp:Label>

窗體控件輸入控件

Web 控件組中包含的一些控件,允許最終用户輸入將由服務器上的頁面處理的數據。
TextBox 控件用於提供文本編輯能力。與 Label 控件相似,這裏的文本也可以是數據綁定的。TextBox 控件支持多種模式,可以用來實現單行輸入、多行輸入和密碼輸入:
<asp:TextBox runat="server" Text="TextBox1"></asp:TextBox>
<asp:TextBox runat="server" Mode="Multiline" Rows="3">
TextBox1
</asp:TextBox>
<asp:TextBox runat="server" Mode="Password"></asp:TextBox>
CheckBox 控件用於生成能夠在選中和清除這兩種狀態間切換的複選框
<asp:CheckBox runat="server" Text="CheckBox1" Checked="True"></asp:CheckBox>
RadioButton 控件與 CheckBox 控件相似,但使用時通常會與其它 RadioButton 控件組成一組,以提供一組互斥的選項:
<asp:RadioButton runat="server" Text="RadioButton1" GroupName="Group1" Checked="true">
</asp:RadioButton>
<asp:RadioButton runat="server" Text="RadioButton2" GroupName="Group1"></asp:RadioButton>
選擇
下面的四個控件提供了允許用户從展示給他們的選項中進行選擇的機制。選項列表的內容既可像下面的示例中那樣是靜態定義的,也可以使用數據源來動態填充。
DropDownList 控件提供了將選項顯示為下拉式列表,並從中進行單項選擇的能力:
<asp:DropDownList runat="server">
<asp:ListItem Text="Choice1" value="1" selected="true"/>
<asp:ListItem Text="Choice2" value="2"/>
</asp:DropDownList>
ListBox 控件能夠以可滾動列表的形式顯示選項,並允許從中選擇單個或多個選項:
<asp:ListBox runat="server" SelectionMode="Multiple">
<asp:ListItem Text="Choice1" value="1" selected="true"/>
<asp:ListItem Text="Choice2" value="2"/>
</asp:ListBox>
CheckBoxList 控件用於創建一組顯示為一列或多列的 Checkbox 控件:
<asp:CheckBoxList runat="server">
<asp:ListItem Text="Choice1" value="1" selected="true"/>
<asp:ListItem Text="Choice2" value="2" selected="true"/>
</asp:CheckBoxList >
RadioButtonList 控件與 CheckBoxList 控件非常相似。不同之處在於,它使用的是一組 RadioButton 控件以創建一組互斥的選項:
<asp:RadioButtonList runat="server">
<asp:ListItem Text="Choice1" value="1" selected="true"/>
<asp:ListItem Text="Choice2" value="2"/>
</asp:RadioButtonList >

窗體控件表單提交和回傳

下列控件用於將帶有用户輸入值的頁面提交給服務器,以便用頁面中的代碼對這些值進行處理。這些控件會在服務器上產生一個 Click 事件,在代碼中使用。
Button 控件可以生成一個能夠將頁面再提交給服務器的三維按鈕:
<asp:Button runat="server" Text="Click Me"></asp:Button>
LinkButton 控件的行為與 Button 控件相同。但它在頁面上會顯示為一個超級鏈接:
<asp:LinkButton runat="server" Text="Click Me"></asp:Button>
ImageButton 控件也用於提交頁面。它會顯示為一幅圖像,並且能夠提供用户單擊位置的 x 座標和 y 座標:
<asp:ImageButton runat="server" ImageUrl="net.gif"></asp:Button>

窗體控件導航

HyperLink 控件用於生成能夠跳轉到其它 URL 的鏈接:
<asp:HyperLink runat="server" Text="Follow Me" NavigateUrl="MyPage.aspx"></asp:HyperLink>

窗體控件圖像顯示

Image 控件能夠在頁面上顯示圖像:
<asp:Image runat="server" ImageUrl="net.gif"></asp:Image>

窗體控件版面控件

Panel 控件常用作簡單的組合控件以及動態創建的控件的容器,Panel 控件通常不具有可見的外觀。
<asp:Panel runat="server"></asp:Panel>
Table 控件與相關的 TableRowTableCell 控件相結合,可以用來以編程的方法創建表或表式版面佈局:
<asp:Table runat="server" GridLines="Both" BorderWidth="1px">
<asp:TableRow>
<asp:TableCell>[0,0]</asp:TableCell>
<asp:TableCell>[0,1]</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>[1,0]</asp:TableCell>
<asp:TableCell>[1,1]</asp:TableCell>
</asp:TableRow>
</asp:Table>

窗體控件日期選擇

Calendar 控件能夠讓用户瀏覽日期並進行日期選擇(包括選擇日期範圍):
<asp:Calendar runat=server DayNameFormat="FirstLetter" ...>
<property name=SelectedDayStyle>
<asp:TableItemStyle Font-Bold="True" BackColor="#CCCCFF"/>
</property>
...
</asp:Calendar>

窗體控件列表綁定控件

列表綁定控件用於顯示與其相關聯的數據源或列表的內容。它們提供了創建多種自定義及標準版式的能力。 Repeater 控件是一個列表綁定控件,沒有預定義外觀的方式顯示數據源的內容:
<asp:Repeater runat="server">
<template name="HeaderTemplate">
<ol>
</template>
<template name="ItemTemplate">
<li>
<a runat="server" href='<%# DataBinder.Eval(Container.DataItem, "SiteURL") %>'>
<%# DataBinder.Eval(Container.DataItem, "SiteName") %>
</a>
</li>
</template>
<template name="FooterTemplate">
</ol>
</template>
</asp:Repeater>

窗體控件其他功能控件

DataList 控件也使用模板來顯示與之綁定的數據源的內容。此外,它還提供了自定義外觀格式和佈局的功能:<asp:DataList runat="server">
<template name="ItemTemplate">
<%# DataBinder.Eval(Container.DataItem, "PersonName") %>
...
</template>
...
</asp:DataList>
DataGrid 控件能夠創建列表版式,用來顯示與之綁定的數據源的內容。它提供了對排序、編輯和分頁的支持。
<asp:DataGrid runat="server" ...>
<property name="Columns">
<asp:BoundColumn HeaderText="ID" .../>
...
</property>
...
</asp:DataGrid>
Validation 控件
Validation 控件簡化了對用户輸入的內容進行驗證的工作。它們能自動為上層瀏覽器生成客户機端腳本,以便在進行回傳前,在用户的計算機上進行驗證,從而實現了交互性和對用户友好性更加良好的頁面。與此同時,它們也能在服務器上作為第二道防線來完成同樣的工作。“RequiredFieldValidator 控件用於確保用户填寫了必須輸入的那些輸入控件。
RangeValidator 控件用於檢查用户輸入的內容在有效取值範圍之內。這對於數字或日期類型的輸入內容十分有用。
CompareValidator 控件用於對比一個控件中的輸入內容與另一個控件中的輸入內容。
RegularExpressionValidator 控件能夠檢查用户輸入的內容是否符合作為標準的規範表達式(或字符串模式)。
CustomValidator 控件允許您提供自定義的服務器端和客户機端驗證邏輯。
ValidationSummary 控件能夠提供由驗證控件生成的所有錯誤信息的概要。
零雜控件
AdRotator 控件用於顯示廣告或橫幅。廣告的有關信息(包括其圖像的 URL)使用 XML 文件來定義:
<asp:AdRotator runat="server" AdvertisementFile="AdsList.xml"></asp:AdRotator>

窗體控件HTML 控件與 Web 控件的比較

窗體控件控件抽象

HTML 控件不具備任何抽象能力。每種控件與 HTML 標記都是一一對應的。
Web 控件創建了更高級別的抽象,它們沒有任何對應的 HTML 標記(如 Calendar 和 DataGrid)。因為它們不直接映射為 HTML 標記,所以 Web 控件還能夠在適當的場合起到合併功能的作用(例如用一個 TextBox 控件來代替多個標記)。這種抽象為使用第三方提供的種類豐富的控件工具箱打開了方便之門。

窗體控件對象模型

HTML 控件提供了以 HTML 為中心的對象模型。每種控件都包括一個屬性集,可以使用該屬性集來控制標記的屬性。這個屬性集使用了字符串名/值對,並且不是強類型的。
在使用 HTML 控件時,編程方式與使用傳統的 ASP 進行編程十分類似。因而,HTML 控件提供了一條快捷的移植途徑 — 可以通過添加一個 runat="server" 屬性來將一個標記轉變為一個服務器控件。
Web 控件提供了基於表單的、類似於 Visual Basic 的編程模式。它們也提供了屬性集,但它們的主要目標在於提供一種安全且具有一致性的對象模型。每種 Web 控件都包含一組標準的屬性,如 ForeColor、BackColor、Font 等。
這種對象模型還在像 Visual Studio NET 這樣的設計工具中提供設計時體驗。

窗體控件目標瀏覽器

HTML 控件不會自動檢測請求頁面的瀏覽器的能力,也不會修改它們提供的 HTML。
Web 控件能夠自動對它們生成的結果進行調整,以確保輸出結果在高級瀏覽器和低級瀏覽器上的工作同樣出色。Web 控件還能夠針對不同的瀏覽器提供不同的行為,從而充分發揮瀏覽器的潛力。例如,validation 控件還可以通過客户端的腳本來創建用於高級瀏覽器的具有高度交互性的頁面。

窗體控件對生成的 HTML的控制

HTML 控件允許完全控制所顯示的內容以及發送到客户機瀏覽器的內容。
Web 控件提供了更為豐富的對象模型,以及適應多種瀏覽器的能力。因而,它們沒有提供對輸出結果的相同程度的控制能力。
在開發 Web 應用程序時,可以根據這兩組控件的能力以及需求來從中進行選擇。還可以選擇在同一頁上混合使用這兩組控件,使用一種類型的控件並不妨礙同時使用另一種類型的控件。

窗體控件Web 窗體和 RAD 體驗

Web 窗體和服務器控件為 Web 頁面和應用程序提供了相同的程序開發(RAD)體驗
工具箱允許將像控件這樣的可見組件,以及像數據集和其它服務器組件這樣的不可見組件,拖放到設計工作台上。
設計工作台自身能以所見即所得的方式在頁面上顯示控件。該設計器還有一個相關聯的後台代碼窗口,可以在該窗口中創建並編輯頁面背後的邏輯。通過雙擊組件和控件,就可以前往這個後台代碼窗口中的相應代碼。Property Browser(屬性瀏覽器)能夠自定義設計工作台上的組件。
Solution Explorer(解決方案瀏覽器)和項目用來管理和部署會在 Web 應用程序中出現的組件、頁面、後台代碼文件和其它內容文件。