ASP.NET的控件包括WEB服务器控件、WEB用户控件、WEB自定义控件、HTML服务器控件和HTML控件。HTML控件、HTML服务器控件和WEB服务器控件之间的区别如下所示。
q HTML控件:这完全是浏览器端的HTML标签控件,例如HTML中常见的单选框表单控件,其HTML代码如以下代码所示。
<input type="radio" id="Radio1" value="select1" checked="checked" />
这类控件在服务器端被视为字符串直接发送到浏览器端,由浏览器进行解析。
q HTML服务器控件:即在HTML控件的基础上加上“runat”属性,并将其值设置为“server”。
q WEB服务器控件:也被称为asp.net服务器控件,是ASP.NET特有的WEB编程元素。该控件运行于服务器端,根据代码的执行结果生成一个或者多个HTML控件,而不是直接描述HTML控件。WEB服务器控件以“asp:”开头,后面是控件类型名称,如以下代码所示。
<asp:TextBox runat="server" ID="MyTextBox" Text="初始文本" TextMode="MultiLine"></asp:TextBox>
这是使用比较频繁的TextBox控件,可以看到,这种方式的控件和Windows程序控件非常相似。
【分析】
本题主要考查面试者对ASP.NET中控件概念的熟悉程度。HTML控件、HTML服务器控件和WEB服务器控件是ASP.NET开发中最常用的控件类型,其中HTML控件仅运行于浏览器端。
HTML服务器控件和HTML控件的区别是运行方式,ASP.NET运行库检查到控件的“runat”属性为“server”时,其所在的页面类对象会将该控件放入控制器,服务器端的代码就能对其进行控制。当服务器端相关的控制代码执行完毕后,将HTML服务器控件的执行结果转换成HTML标签,然后作为字符串发送到浏览器端进行解析。
而WEB服务器控件提供更加统一的编程接口,并且编程者无须考虑浏览器端的类型、兼容性等情况。WEB服务器控件的事件处理在服务器端,并且可以保存状态到ViewState(视图状态)中。