3.5.1 标准控件
这些控件是在使用Windows应用程序时遇到的各种工具的Web对等物。包含这些控件的网页和标准应用程序给我们的感觉很相似,所以在页面中添加这些控件的过程非常容易。下面是一些最常用的控件:
●TextBox控件:用于在页面上输入文本,常见于购物站点的订单表格,或站点的登录页面。
●Button控件:从提交订单到修改站点的个人设置,单击页面上的按钮通常会促使信息传递到服务器,而服务器会对这些信息做出反应并显示一个结果。
●Label控件:用于在页面的特定位置显示简单的文本。使用Label控件可以根据用户的交互容易地修改页面某个部分的文本。
●Hyperlink控件:用于在页面上提供超链接功能,这个功能允许导航到站点的其他页面,或者导航到Internet上的其他资源。
●Image控件:用于在页面上显示图片。根据用户的输入,服务器可以修改在控件中显示的具体图片。
●DropDown List控件:用于向用户提供一个可选择的选项列表;该列表在没有使用时会折叠起来以节省空间。
●Listbox控件:用于提供一个大小固定的选项列表。
●CheckBox和Radio Button控件:用于选择可选的附加信息,具体形式分别是yes/no和“多选一”。
图3-28显示了ASP.NET Web Site Administration Tool画面,在下一章将学习使用该工具管理用户账户。在这个画面中能够看到很多上面介绍的控件。
图 3-28
页面上的Search by:标签很可能是一个Label控件,接下来是一个DropDownList控件。for:标签后面是一个TextBox控件,再后面是一个Button控件。在每个用户名的前面都有一个CheckBox控件,用于选择用户,还有一些HyperLink控件用于管理用户账户。在下一章中,您对这个配置应用程序将会非常熟悉,它是在一个页面上有多种控件的经典示例。
3.5.2 HTML控件
在创建站点时,有时对某个控件在服务器端不需要做任何处理。在这种情况下,开发人员可能只想在页面上添加静态的HTML控件;例如,仅仅在页面上放置一些元素以便为元素的分组提供容器。工具箱的HTML面板上包含了大多数最常用的HTML元素的拖放版本。如果浏览工具箱上的这个区域(如图3-29所示),将看到诸如Input(Text)文本框、Table控件以及Div等客户端的HTML元素。
工具栏中的这些控件只是向页面添加HTML元素的一种简便的方法,可以使用的控件并不局限于这些元素。在Source View中,开发人员可以添加任意合法的HTML元素;例如,用于超链接的锚标记<a>,或者用于突出显示页面某个部分文本的<span>标记。
诸如Table和Div这样的控件是容器,因此在它们的定义内可以包含其他控件。例如,在Table控件中,可以在每个表格单元内嵌入不同的控件。在Div控件内也可以放置很多不同的元素和控件。可以将服务器端控件嵌入到类似这种用于布局页面的静态的、非服务器的HTML元素内。
图 3-29
1. 将HTML控件用作Server控件可以将任何HTML元素转换为服务器控件,只要为该元素添加runat=“server”属性即可。如将在第6章看到的那样,当页面提交到服务器的时候,可以使用代码动态地处理任何服务器控件(由HTML元素转换而来的或ASP.NET的)。例如,在向页面添加了一个ASP.NET TextBox控件之后,可以使用在服务器上运行的代码设置该控件文本区显示的值。然而,一旦为某个元素添加了runat=“server”属性(并为其指定一个惟一的ID),例如一个div元素,接下来就可以使用运行在服务器上的代码动态地指定这个div要显示什么、以及应将它放置在什么位置。
另外,因为可以向任意HTML元素添加runat=“server”属性,所以如果喜欢,可以使用Input type=“text”控件代替ASP.NET的TextBox控件—— 其他HTML元素只要在ASP.NET工具箱中有对应的控件都可以这样使用。
2. 应该使用HTML控件还是ASP.NET服务器控件这个问题实际上只与页面上简单的元素有关,例如文本框、按钮和表格等。复杂的服务器控件,例如Calendar控件,用户加速站点的开发速度,因此这种情况下不用考虑具体使用哪种控件。在选择向页面添加哪种类型的控件时,绝大多数开发人员的方法是在页面上主要使用ASP.NET的Standard Server Control,而在布局时使用静态HTML元素。
虽然在大多数情况下都可以这样做(而且确实在有些情况下需要使用服务器控件才能获得HTML控件无法提供的功能),但也有例外的情况。例如,向HTML div和table元素添加runat=“server”是作者通常使用的一种技术,如果我知道我希望根据用户的输入显示或隐藏页面的某部分,就可以把需要在服务器上处理的元素转换为服务器控件,然后动态地控制它们的可视性。虽然使用标准的服务器控件也很容易创建具有相同功能的站点,但我所在的工作小组只使用简单的HTML元素进行布局,因此有时将某些HTML元素转换为服务器控件比重写代码使用ASP.NET内建的服务器控件要容易一些。在这个问题上没有真正的对与错,所以应该根据自己的判断进行选择,但应该注意到,可能会遇到使用其他方法编写的代码,这些方法仍然是有效可行的。>