在创建 ASP.NET 网页时,您可以使用以下类型的控件:
· HTML 服务器控件 对服务器公开的 HTML 元素,可对其进行编程。HTML 服务器控件公开一个对象模型,该模型十分紧密地映射到相应控件所呈现的 HTML 元素。
·Web 服务器控件 这些控件比 HTML 服务器控件具有更多内置功能。Web 服务器控件不仅包括窗体控件(例如按钮和文本框),而且还包括特殊用途的控件(例如日历、菜单和树视图控件)。Web 服务器控件与 HTML 服务器控件相比更为抽象,因为其对象模型不一定反映 HTML 语法。
·验证控件 包含逻辑以允许对用户在输入控件(例如 TextBox 控件)中输入的内容进行验证的控件。验证控件可用于对必填字段进行检查,对照字符的特定值或模式进行测试,验证某个值是否在限定范围之内,等等。
·用户控件 作为 ASP.NET 网页创建的控件。ASP.NET 用户控件可以嵌入到其他 ASP.NET 网页中,这是一种创建工具栏和其他可重用元素的捷径。
说明: 您还可以创建用于移动设备的输出。为此,可使用同一个 ASP.NET 页框架(但要创建的是移动 ASP.NET 网页而不是 ASP.NET 网页),并使用专门为移动设备设计的控件。
在相同的页上可以使用所有类型的控件。以下各节提供了有关 ASP.NET 服务器控件的更多详细信息。
说明: 在某些情况下,服务器控件需要客户端脚本才能正常工作。如果用户在浏览器中禁用脚本功能,则控件可能无法按预定方式工作。
1、HTML 服务器控件
HTML 服务器控件属于 HTML 元素(或采用其他支持的标记的元素,例如 XHTML),它包含多种属性,使其可以在服务器代码中进行编程。默认情况下,服务器上无法使用 ASP.NET 网页中的 HTML 元素。这些元素将被视为不透明文本并传递给浏览器。但是,通过将 HTML 元素转换为 HTML 服务器控件,可将其公开为可在服务器上编程的元素。
HTML 服务器控件的对象模型紧密映射到相应元素的对象模型。例如,HTML 属性在 HTML 服务器控件中作为属性公开。
页中的任何 HTML 元素都可以通过添加属性 runat="server" 来转换为 HTML 服务器控件。在分析过程中,ASP.NET 页框架将创建包含 runat="server" 属性的所有元素的实例。若要在代码中以成员的形式引用该控件,则还应为该控件分配 id 属性。
页框架为页中最常动态使用的 HTML 元素提供了预定义的 HTML 服务器控件:form 元素、input 元素(文本框、复选框、“提交”按钮)、select 元素,等等。这些预定义的 HTML 服务器控件具有一般控件的基本属性,此外每个控件通常提供自己的属性集和自己的事件。
HTML 服务器控件提供以下功能:
·可在服务器上使用熟悉的面向对象的技术对其进行编程的对象模型。每个服务器控件都公开一些属性 (Property),您可以使用这些属性 (Property) 在服务器代码中以编程方式来操作该控件的标记属性 (Attribute)。
·提供一组事件,您可以为其编写事件处理程序,方法与在基于客户端的窗体中大致相同,所不同的是事件处理是在服务器代码中完成的。
·在客户端脚本中处理事件的能力。
·自动维护控件状态。在页到服务器的往返行程中,将自动对用户在 HTML 服务器控件中输入的值进行维护并发送回浏览器。
·与 ASP.NET 验证控件进行交互,因此您可以验证用户是否已在控件中输入了适当的信息。
·数据绑定到一个或多个控件属性。
·支持样式(如果在支持级联样式表的浏览器中显示 ASP.NET 网页)。
·直接可用的自定义属性。您可以向 HTML 服务器控件添加所需的任何属性,页框架将呈现这些属性而不会更改其任何功能。这允许您向控件添加浏览器特定属性。
2、Web 服务器控件
Web 服务器控件是设计侧重点不同的另一组控件。它们不必一对一地映射到 HTML 服务器控件,而是定义为抽象控件,在抽象控件中,控件所呈现的实际标记与编程所使用的模型可能截然不同。例如,RadioButtonList Web 服务器控件可以在表中呈现,也可以作为带有其他标记的内联文本呈现。
Web 服务器控件包括传统的窗体控件,例如按钮、文本框和表等复杂控件。它们还包括提供常用窗体功能(例如在网格中显示数据、选择日期、显示菜单等)的控件。
除了提供 HTML 服务器控件的上述所有功能(不包括与元素的一对一映射)外,Web 服务器控件还提供以下附加功能:
·功能丰富的对象模型,该模型具有类型安全编程功能。
·自动浏览器检测。控件可以检测浏览器的功能并呈现适当的标记。
·对于某些控件,可以使用 Templates 定义自己的控件布局。
·对于某些控件,可以指定控件的事件是立即发送到服务器,还是先缓存然后在提交该页时引发。
·支持主题,您可以使用主题为站点中的控件定义一致的外观。
·可将事件从嵌套控件(例如表中的按钮)传递到容器控件。
控件使用类似如下的语法:
<asp:button attributes runat="server" id="Button1" />
本例中的属性不是 HTML 元素的属性。相反,它们是 Web 控件的属性。
在运行 ASP.NET 网页时,Web 服务器控件使用适当的标记在页中呈现,这通常不仅取决于浏览器类型,还与对该控件所做的设置有关。例如,TextBox 控件可能呈现为 input 标记,也可能呈现为 textarea 标记,具体取决于其属性。