首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

HTML服务器控件

HTML Server Controls

本书的重点是使用ASP.NET服务器控件。然而,了解和使用HTML及HTML服务器控件,对在现实中开发应用程序是有帮助的。

服务器不会处理普通的HTML控件,例如,<h1>、<a>和<input>,它们将直接被发送到客户端,由浏览器进行显示。可以为服务器提供标准的HTML控件,将它们转换为HTML服务器控件,使得它们能在服务器端处理。

将HTML控件转换为HTML服务器控件,只需简单地添加runat="server"属性。另外,可能您还会添加id属性,这样可以通过编程方式访问和控制控件。例如,下面从一个简单的输入控件开始:

<input type="text" size="40">

您可以添加id和runat属性,将它转换为HTML服务器控件,如下所示:

<input type="text" id="BookTitle" size="40" runat="server">

基于以下两个主要原因,可选择使用HTML服务器控件,而不是ASP.NET服务器控件:

为了在ASP.NET下运行,转换现有的HTML页

为了在ASP.NET下运行转换的现有的HTML页,您须将文件的扩展名修改为.aspx。然而,HTML控件只能运行在客户端,而不是服务器端。为了获得如自动维护状态(见第6章)等服务器端处理的优势,必须为控件添加runat属性。

使用HTML表格实现页面布局

服务器端控件消耗服务器资源。通常,页面使用静态表格实现布局。除非须要引用一个或多个表格元素,否则,无须进行服务器端处理。下面的示例说明了这一要点。

在VS2005中,新建一个网站,并将其命名为HtmlServerControls。从“Toolbox”中拖动一个HTML表格控件到设计区。将该表格设置为2列6行。将一个HTML按钮拖动到页面中,并且置于表格下方。接着设置按钮的ID和runat="server"属性。

在表格第一行的第一个单元格中,输入文本字符串Name,然后在第二个单元格中,添加一个Input(文本框)控件。将Input控件的ID设置为txtName。接下来的三行与之类似,三个Input控件分别命名为txtStreet、txtCity和txtState。保留表格第5行

的空白。保留最后一行第二列的空白,并将它的ID设置为tdInnerHtml。设计视图如图3-5所示,其中标识了控件名称。

图3-5:HTML控件的页面布局

确认所有被命名的控件都设置了runat="server"属性。然而,页面上其他表格元素,既不需要ID属性,又不需要runat属性。因为,它们都用作静态显示,而无须在服务器上处理。

在设计视图中,双击按钮以便在代码隐藏文件中添加事件处理程序。输入以下突出显示的代码:

protected void btnDoIt_ServerClick(object sender, EventArgs e)

{

   string strHtml = "";

   strHtml += txtName.Value + "<br/>";

   strHtml += txtStreet.Value + "<br/>";

   strHtml += txtCity.Value + ", " + txtState.Value;

   tdInnerHtml.InnerHtml = strHtml;

}

如果查看Default.aspx文件源视图中按钮的HTML代码,您将会发现,按钮包含一个onServerClick属性,而不是常规HTML或ASP页面中使用的onServer属性。这就在告知服务器:当Click事件发生时,应调用的函数是:

onServerClick="btnDoIt_ServerClick"

提示:如果希望控件在客户端处理事件,那么应使用传统的onClick属性。在这种情况下,必须提供客户端脚本来处理事件。

您可以在同一个按钮控件中,包含onClick和onServerClick属性。这种情况下,将首先执行客户端代码,而后再运行服务器端代码。本章稍后将做示范。

如果留意一下Click事件处理程序会发现,每次单击“Do It!”按钮,它都会被执行。您将看到一个HTML字符串中包含了输入文本框的值,同时,还会加上些HTML作为换行。这个字符串被指定给一个表格单元格的InnerHtml属性,该单元格id属性值为tdInnerHtml:

tdInnerHtml.InnerHtml = strHtml

如果使用InnerText属性替换InnerHtml属性,那么结果页则显示<和>符号。然而,采用这样方式,当在文本域中输入值,并单击按钮之后,结果页如图3-6所示。

图3-6:具有InnerHtml的HTML服务器控件

表3-5列举了HTML标签,以及它们属于的类别。在图3-5和3-6所示的示例中,两个输入控件的类型分别是文本域和按钮。如表3-5所示,这二者都使用了<input>这样的HTML标签,而其他输入控件则没有使用该标签。

表3-5  HTML标签及其类别

HTML标签

类  别

HTML服务器控件名称

说  明

<head>

容器

HtmlHead

<head>元素。可以在它的控件集合中添加其他元素

<input>

输入

HtmlInputButton

HtmlInputCheckbox

HtmlInputFile

HtmlInputHidden

HtmlInputImage

HtmlInputPassword

HtmlInputRadioButton

HtmlInputReset

HtmlInputSubmit

HtmlInputText

<input type=button | submit | reset>

<input type=checkbox>

<input type=file>

<input type=hidden>

<input type=image>

<input type=password>

<input type=radio>

<input type=reset>

<input type=submit>

<input type=text | password>

<img>

HtmlImage

图片

<link>

HtmlLink

Href属性读取/设置URL目标

<textarea>

输入

HtmlTextArea

多行文本输入

<a>

容器

HtmlAnchor

锚标签

<button>

容器

HtmlButton

可自定义输出格式,IE 4.0及以上版本可用

<form>

容器

HtmlForm

每个页面最多只能有一个HtmlForm控件;method默认为POST

<table>

容器

HtmlTable

表格,可以包含行,行中包含单元格

<td> <th>

容器

HtmlTableCell

表格单元格;表格标题单元格

<tr>

容器

HtmlTableRow

表格行

<title>

容器

HtmlTitle

标题元素

<select>

容器

HtmlSelect

用于选择的下拉菜单

容器

HtmlGenericControl

没有列出任何HTML控件

提示:实际上,在一个内容文件,例如,页面、用户控件或者母版页中,您不会仅使用表3-5中所示的HTML服务器控件名称。您的HTML代码中,还经常会包括runat="server"属性,还有id属性。

任何HTML控件加上runat="server"属性,都可转换成服务器端处理。它们作为HtmlGenericControl并未在表3-5中列出。所有容器控件,都允许通过编程方式访问控件内部的HTML。

所有HTML服务器控件都从System.Web.UI.Control类派生,都包含在System.Web.UI.HtmlControls命名空间之下。如图3-7显示了HTML服务器控件的对象层次结构。

图3-7:HTML服务器控件对象层次结构

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论