ASP
NET 控件時ASP
NET架構的基本組成部分
從本質上講
ASP
NET是
NETFramework中的類
可以在ASP
NET頁面上映射控件聲明
然後
那些類根據他們的屬性
為控件創建HTML
由於類的對象是在運行時間與頁面一起被編譯的
因此開發人員可以按照面向對象的方式訪問那些對象
例如讀取和更改他們的屬性
調用他們的方法和處理服務器端的事件等
在傳統ASP程序設計中
服務端的VBScript代碼和HTML標記是混和在一起的
容易引起混淆
而在ASP
NET程序設計中
由於能夠以面向對象的方式訪問對象
因此可以創建結構更好
可讀性更強的代碼
ASPNET中的服務器控件 ASP
NET提供了許多不同的服務器控件
他們可以分為以下幾類
<
> HTML Server Controls(HTML 服務器控件)
這些控件是包含標准HTML標記的 類
它由runat=
server
屬性進行聲明
除了runat=
server
屬性之外
控件的其他聲明 不變
但是通過代表控件的對象
可以在代碼中訪問
讀取
更改控件的屬性
例如
支持runat=
server
屬性的
個標記是<a>
<select>和<input>
<
> ASP
NET Web Form Controls:
這是另一組復制基本HTML標記(例如<input>
<a>
<select> 和<button>等)的功能的控件
但是這組控件中的屬性和方法是一致的
並且屬性和方法的名字有一定的意義
因此
開發人員就可以比較容易地聲明和訪問他們
HyperLink
ListBox和Button等都是這類控件
<
> ASP
NET list Controls(ASP
NET 列表控件)
這組控件具有一致的命名規則
並且擴展了基本Web Form Control的屬性
它們可以與數據源進行綁定(例如數據庫
XML文件和數組等)
並且能夠以各種各樣的方式(例如列表
表格
網格等)顯示數據
<
> ASP
NET Templated Controls (ASP
NET模板控件)
這組控件為數據源中的每一個數據項而重復模板
他們允許您使用不同的模板去顯示記錄
編輯記錄和強調重要的記錄
並且還能夠對分頁的支持
<
> ASP
NET Rich Controls :通過設置這類控件的一些屬性
可以讓這類高級控件生成HTML和JavaScript代碼
這類控件的傑出代表就是Calendar控件
本章的內容中將對這類控件進行詳細討論
<
> ASP
NET Validation Controls通過頁面上聲明這類控件
可以很容易地根據一定的標准或用戶定義的規則(例如輸入不能為空
輸入必須是數字
輸入的數字必須大於某個值等)對相關的輸入進行驗證
通過編程的方式創建服務器控件 使用ASP
NET
可以創建HTML服務器控件的實例
使用面向對象的方法設置控件的屬性
並把控件添加到頁面的Controls集合中
這樣
所有的工作都完成了
例如
下面的代碼(HTMLServTest
aspx中的代碼) 是新ASPX頁面的全部 內容
沒有控件的聲明
只有服務器端的Page_Load程序
這個程序動態地創建一個
行
列的表
並設置表的顏色和文本
然後在頁面上把表顯示出來
<script runat=
server
language=
C#
>
void Page_Load()
{
//create a new HTMLTable object
HtmlTable table
= new HtmlTable();
HtmlTableRow row;
HtmlTableCell cell;
//set the table
s styles
table
Border =
;
table
CellPadding =
;
table
CellSpacing =
;
table
BorderColor =
red
;
for(int i=
; i<=
; i++)
{
//create a new row and set its background color
row = new HtmlTableRow();
row
BgColor =(i%
==
?
lightyellow
:
lightcyan
);
for(int j=
; j<=
; j++)
{
//create a cell and set its text
cell = new HtmlTableCell();
cell
InnerHtml =
Row :
+ i
ToString()+
<br>Cell:
+j
ToString();
//add the cell to the current row
row
Cells
Add(cell);
}
//add the row to the table
table
Rows
Add(row);
}
//add the table to page
Page
Controls
Add(table
);
}
</script>
上面的代碼中有兩個嵌套的循環
外層的循環創建行
然後進入內層的循環
內層的循環創建數據單元
並把數據單元添加到行的Cells集合中
當一次內層的循環結束時
帶有數據單元的行就被添加到表的Rows集合中
最後一步是把表添加到頁面的Controls集合中
從創建的這個表中可以看到有多少個子控件(數據單元和行)被添加給父母的集合(Rows和Controls)
這個機制同樣適應於處理其他的服務器控件
From:http://tw.wingwit.com/Article/program/net/201311/12857.html