ASPNET 控件时ASPNET架构的基本组成部分从本质上讲ASPNET是NETFramework中的类可以在ASPNET页面上映射控件声明然后那些类根据他们的属性为控件创建HTML由于类的对象是在运行时间与页面一起被编译的因此开发人员可以按照面向对象的方式访问那些对象例如读取和更改他们的属性调用他们的方法和处理服务器端的事件等在传统ASP程序设计中服务端的VBScript代码和HTML标记是混和在一起的容易引起混淆而在ASPNET程序设计中由于能够以面向对象的方式访问对象因此可以创建结构更好可读性更强的代码
ASPNET中的服务器控件
ASPNET提供了许多不同的服务器控件他们可以分为以下几类
<> HTML Server Controls(HTML 服务器控件)
这些控件是包含标准HTML标记的类它由runat=server属性进行声明
除了runat=server属性之外控件的其他声明不变但是通过代表控件的对象可以在代码中访问读取更改控件的属性例如 支持runat=server属性的个标记是<a><select>和<input>
<> ASPNET Web Form Controls:
这是另一组复制基本HTML标记(例如<input><a><select> 和<button>等)的功能的控件但是这组控件中的属性和方法是一致的并且属性和方法的名字有一定的意义因此开发人员就可以比较容易地声明和访问他们HyperLink ListBox和Button等都是这类控件
<> ASPNET list Controls(ASPNET 列表控件)
这组控件具有一致的命名规则并且扩展了基本Web Form Control的属性它们可以与数据源进行绑定(例如数据库XML文件和数组等)并且能够以各种各样的方式(例如列表表格网格等)显示数据
<> ASPNET Templated Controls (ASPNET模板控件) 这组控件为数据源中的每一个数据项而重复模板他们允许您使用不同的模板去显示记录编辑记录和强调重要的记录并且还能够对分页的支持
<> ASPNET Rich Controls :通过设置这类控件的一些属性 可以让这类高级控件生成HTML和JavaScript代码这类控件的杰出代表就是Calendar控件本章的内容中将对这类控件进行详细讨论
<> ASPNET Validation Controls通过页面上声明这类控件可以很容易地根据一定的标准或用户定义的规则(例如输入不能为空输入必须是数字输入的数字必须大于某个值等)对相关的输入进行验证
通过编程的方式创建服务器控件
使用ASPNET 可以创建HTML服务器控件的实例使用面向对象的方法设置控件的属性并把控件添加到页面的Controls集合中这样所有的工作都完成了
例如下面的代码(HTMLServTestaspx中的代码) 是新ASPX页面的全部 内容
没有控件的声明只有服务器端的Page_Load程序这个程序动态地创建一个行列的表并设置表的颜色和文本然后在页面上把表显示出来
<script runat=server language=C#>
void Page_Load()
{
//create a new HTMLTable object
HtmlTable table = new HtmlTable();
HtmlTableRowrow;
HtmlTableCellcell;
//set the tables styles
tableBorder =;
tableCellPadding =;
tableCellSpacing =;
tableBorderColor =red;
for(int i=; i<=; i++)
{
//create a new row and set its background color
row = new HtmlTableRow();
rowBgColor =(i%== ?lightyellow : lightcyan);
for(int j=; j<=; j++)
{
//create a cell and set its text
cell = new HtmlTableCell();
cellInnerHtml =Row : + iToString()+
<br>Cell:+jToString();
//add the cell to the current row
rowCellsAdd(cell);
}
//add the row to the table
tableRowsAdd(row);
}
//add the table to page
PageControlsAdd(table);
}
</script>
上面的代码中有两个嵌套的循环外层的循环创建行然后进入内层的循环内层的循环创建数据单元并把数据单元添加到行的Cells集合中当一次内层的循环结束时带有数据单元的行就被添加到表的Rows集合中最后一步是把表添加到页面的Controls集合中
从创建的这个表中可以看到有多少个子控件(数据单元和行)被添加给父母的集合(Rows和Controls)这个机制同样适应于处理其他的服务器控件