服务器控件
除了使用<% %>代码块能编程实现动态内容外,ASP.NET还提供了服务器控件完成同样的功能。.aspx文件中,服务器控件以包含runat="server"属性设置的标记定义。
以下的例子中使用了4个服务器控件:<form runat=server>、<asp:textbox runat=server>、<asp:dropdownlist runat=server>以及<asp:button runat=server>。运行时,这些服务器控件将动态建立HTML输出内容。
Intro4.aspx
点击执行 查看源代码
我们可以看到,使用服务器控件能够自动地保持客户端输入的任何数值,而不需考虑与服务器交互多少次。这些控件的状态不是保存在服务器端,而是在与服务器交互过程中保存在了一个<hidden>表单域中。同时,客户端不再需要什么客户端脚本程序。
除了标准的HTML输出控件以外,ASP.NET还可以让开发者在页面上使用丰富的定制控件。请试一试下面的例子,看看如何使用<asp:adrotator>控件在页面上动态显示旋转广告:
Intro5.aspx
点击执行 查看源代码
关于ASP.NET的内置服务器控件的详细列表,请参阅这里。
处理服务器控件的事件
每个ASP.NET服务器控件都可以当做一个对象模型看到,包括了属性、方法和事件。ASP.NET应用开发人员利用这些特征就能够清晰地修改页面并建立动态交互功能。
以下的例子描述了如何处理<asp:button runat=server>控件的OnClick事件,从而进一步操纵<asp:label runat=server>控件的"text"属性:
Intro6.aspx
点击执行 查看源代码
这个例子与前面列举的"Intro3"例程功能相当。但是,你可以看到,这里的代码使用了服务器控件,从而使程序结构更加清晰易懂。
使用定制的服务器控件
ASP.NET系统自带了45个内置的服务器控件。除了使用这些控件外,开发者还可以选择第3方的控件产品。
以下例子描述了如何使用日历控件。在页面中使用<acme:calendar runat=server>标记进行日历控件的定义。页面顶部的<% Register %>标识负责使用控件执行的"Acme"名字空间登记"Acme" XML标记前缀,随后在运行时ASP.NET页面解析器将使用这个名字空间转载日历控件类实例。
Intro7.aspx
点击执行 查看源代码
上面例子中的日历控件可以适用于高、低版本的浏览器。在高版本浏览器中将产生DHTML输出,从而在日期、月份的选择上不再需要与服务器进行往返处理。对于低版本浏览器,控件将产生标准的HTML3.2内容,客户端交互操作时将有与服务器端的往返处理过程发生。
然而,不管访问页面的是高版本浏览器还是低版本浏览器,需要编写的代码是相同的。日历控件本身被压缩进相应的逻辑处理过程中。