什么是 ASP.NET Web 窗体?
ASP.NET Web 窗体页框架是可以在服务器上用于动态生成 Web 页的可缩放公共语言运行库编程模型。
作为 ASP 的逻辑演变(ASP.NET 提供与现有页的语法兼容性),ASP.NET Web 窗体框架被特别设计为弥补前一模型中若干主要的不足之处。具体说来,它提供:
创建和使用可封装常用功能的可重用 UI 控件,并由此减少页开发人员必须编写的代码量的能力。
开发人员以有序的形式(而不是“面条式代码”)清晰地构造页逻辑的能力。
开发工具为页提供强大的 WYSIWYG 设计支持的能力(现有的 ASP 代码对工具不透明)。
本“入门”节提供一些主要 ASP.NET Web 窗体功能的高级代码演练。后面的“入门”节深入探讨具体的细节。
编写第一个 Web 窗体页
ASP.NET Web 窗体页是带 .aspx 文件扩展名的文本文件。可在整个 IIS 虚拟根目录树中部署它们。当浏览器客户端请求 .aspx 资源时,ASP.NET 运行库分析目标文件并将其编译为一个 .NET 框架类。此类然后可用于动态处理传入的请求。(注意只能在第一次访问 .aspx 文件时对其进行编译,已编译的类型实例然后在多个请求间重用)。
只需采用现有的 HTML 文件并将其扩展名更改为 .aspx(不需要对代码进行任何修改)即可创建 ASP.NET 页。例如,下面的示例说明一个简单的 HTML 页;该页收集用户名和类别首选项,然后在单击按钮时执行将窗体回发到起始页的操作:
C#:
VB:
js:
重要说明:注意当单击“查找”按钮时,什么也不发生。这是因为 .aspx 文件只包含静态 HTML(不包含动态内容)。因此,在与页的每一行程中发送回客户端的 HTML 都是相同的,这导致窗体字段(文本框和下拉列表)的内容在各请求间丢失。
使用 ASP <% %> 呈现块
ASP.NET 提供与现有 ASP 页的语法兼容性。这包括支持可在 .aspx 文件内与 HTML 内容混合的 <% %> 代码呈现块。这些代码块在页呈现时按由上而下的方式执行。
下面的示例说明可以如何使用 <% %> 呈现块在 HTML 块上循环(每次增加字体大小):
C#:
<%@ Page Language="C#"%>
VB:
<%@ Page Language="VB" %>
js:
<%@ Page Language="JScript"%>
重要说明:与 ASP 不同,上述 <% %> 块中使用的代码是实际编译过的,而不是用脚本引擎解释的。这使运行库的执行性能得到了提高。
ASP.NET 页开发人员可以基本上像他们今天对待 ASP 那样,利用 <% %> 代码块动态修改 HTML 输出。例如,下面的示例说明可以如何使用 <% %> 代码块解释从客户端回发的结果。
C#:
<%@ Page Language="C#" %>
VB:
<%@ Page Language="VB" %>
js:
<%@ Page Language="JScript" %>
ASP.NET 服务器控件介绍
除了(或者不)使用 <% %> 代码块编写动态内容代码外,ASP.NET 页开发人员还可使用 ASP.NET 服务器控件编写 Web 页代码。服务器控件在 .aspx 文件内由自定义标记或包含 runat="server" 属性值的内部 HTML 标记声明。内部 HTML 标记由 System.Web.UI.HtmlControls 命名空间内的某个控件处理。给不显式映射到某个控件的标记分配的类型是 System.Web.UI.HtmlControls.HtmlGenericControl。
下面的示例使用四个服务器控件: