4.2 HTML服务器控件
HTML服务器控件运行在服务器上,并且可以直接映射为大多数浏览器支持的标准HTML标签。HTML服务器控件由普通HTML控件转换而来,外观基本上与普通HTML控件一致。
默认情况下,服务器无法使用Web窗体页上的HTML元素,这些元素被视为传递给浏览器的不透明文本。将HTML元素转换为HTML服务器控件,可将其公开为在服务器上可编程的元素。ASP.NET允许提取HTML元素,通过少量的工作,把它们转换为服务器端控件。在源视图中对HTML元素添加runat="server"属性,即可将HTML元素转换为服务器控件。另外,为了让控件在服务器端代码中被识别出来还应当添加Id属性。
HTML服务器控件除了在服务器端处理事件外,还可以在客户端通过脚本处理事件。但它对客户端浏览器兼容性差,不能兼容不同的浏览器。和HTML元素具有相同的抽象层次,没有太复杂的功能。
定义HTML服务器控件的基本语法格式如下:
HTML服务器控件是由HTML标记所衍生出来的新功能,在所有的HTML服务器控件的语法中,最前端是HTML标记,不同控件所用的标记不同:Runat="Server",表示控件将会在服务器端执行;Id用来设置控件的名称,在同一程序中各控件的Id均不相同,Id属性允许以编程的方式引用该控件。
所有的HTML服务器控件都使用一个派生于HtmlControl基类的类。这个类从控件的派生类中继承了许多属性。其中一些容器控件如<form>、<select>使用派生于HtmlContainerControl类的类,因此还拥有一些在HtmlContainerControl类中声明的新属性。
HTML服务器控件的主要事件有ServerClick和ServerChange。控件HtmlAnchnr、HtmlButton、HtmlForm、HtmlInputButton、HtmlInputImage拥有ServerClick事件,该事件是一个简单的单击行为在服务器端的处理,允许代码立即产生动作;HtmlInputCheckBox、HtmlInputHidden、HtmlInputRadioButton、HtmlSelect、HtmlTextArea和HtmlInputText控件拥有ServerChange事件,该事件在发生改变时,直到页面被传回服务器才会出现。
ASP.NET的事件标准是每个事件应该传回两种信息,第一个参数是引发事件的对象(控件),第二个参数是包含事件附加信息的特殊对象。
服务器不会处理普通的HTML控件,它们将直接被发送到客户端,由浏览器进行显示。HTML控件集成在Visual Studio 2012中“工具箱”下的HTML选项卡中,如图4-1所示。
图4-1 HTML控件
如果要让HTML控件能在服务器端被处理,就要将它们转换为HTML服务器控件。将普通HTML控件转换为HTML服务器控件,需添加runat="server"属性。另外,可根据需要添加id属性,这样可以通过编程方式访问和控制它。
例如,下面为文本框输入控件:
为其添加id和runat属性,将它转换为HTML服务器控件,如下面的代码所示:
因为HTML服务器控件比较简单,本书不一一列出讲解,读者如要了解详细的内容,可以参考微软的MSDN文档。