ASP.NET 网页介绍

更新:2007 年 11 月

使用 ASP.NET 网页可以为网站创建动态内容。通过使用静态 HTML 页(.htm 或 .html 文件),服务器读取文件并将该文件按原样发送到浏览器,以此来满足 Web 请求。相比之下,当用户请求 ASP.NET 网页(.aspx 文件)时,该页则作为程序在 Web 服务器上运行。该页运行时,可以执行您的网站要求的任何任务,包括计算值、读写数据库信息或者调用其他程序。该页动态地生成标记(HTML 或另一种标记语言中的元素),并将该标记作为动态输出发送到浏览器。

本主题概述了 ASP.NET 网页在 Web 应用程序中的工作方式的基本特征。

回发和往返行程

ASP.NET 页面作为代码在服务器上运行。因此,要得到处理,页面必须配置为当用户单击按钮(或者当用户选中复选框或与页面中的其他控件交互)时提交到服务器。每次页面都会提交回自身,以便它可以再次运行其服务器代码,然后向用户呈现其自身的新版本。

ASP.NET 网页的处理循环如下:

  1. 用户请求页面。(使用 HTTP GET 方法请求页面。)页面第一次运行,执行初步处理(如果您已通过编程让它执行初步处理)。

  2. 页面将标记动态呈现到浏览器,用户看到的网页类似于其他任何网页。

  3. 用户键入信息或从可用选项中进行选择,然后单击按钮。(如果用户单击链接而不是按钮,页面可能仅仅定位到另一页,而第一页不会被进一步处理。)

  4. 页面发送到 Web 服务器。(浏览器执行 HTTP POST 方法,该方法在 ASP.NET 中称为“回发”。)更明确地说,页面发送回其自身。例如,如果用户正在使用 Default.aspx 页面,则单击该页上的某个按钮可以将该页发送回服务器,发送的目标则是 Default.aspx。

  5. 在 Web 服务器上,该页再次运行。并且可在页上使用用户键入或选择的信息。

  6. 页面执行您通过编程所要实行的操作。

  7. 页面将其自身呈现回浏览器。

只要用户在该页面中工作,此循环就会继续。用户每次单击按钮时,页面中的信息会发送到 Web 服务器,然后该页面再次运行。每个循环称为一次“往返行程”。由于页面处理发生在 Web 服务器上,因此页面可以执行的每个操作都需要一次到服务器的往返行程。

ms178125.alert_note(zh-cn,VS.90).gif说明:

ASP.NET 网页可以运行客户端脚本。客户端脚本不需要到服务器的往返行程,这对于用户输入验证和某些类型的 UI 编程十分有用。有关更多信息,请参见 ASP.NET 网页中的客户端脚本

跨页发送

在某些情况下,您可能需要将某页发送到其他页,而不是发送到该页自身。这种行为称为“跨页发送”。例如,您可能正在创建一系列用来处理客户订单的页面。每页都可以发送到序列中的下一页。有关更多信息,请参见 ASP.NET 网页中的跨页发送

页面生存期

与桌面应用程序中的窗体不同,ASP.NET 网页在用户使用窗体时不会启动或运行,并且仅当用户单击“关闭”按钮时才会卸载。这是由于 Web 具有断开连接的天性。浏览器从 Web 服务器请求页面时,浏览器和服务器相连的时间仅够处理请求。Web 服务器将页面呈现到浏览器之后,连接即终止。如果浏览器对同一 Web 服务器发出另一个请求,则即使是对同一个页面发出的,该请求仍会作为新请求来处理。

Web 这种断开连接的天性决定了 ASP.NET 页的运行方式。用户请求 ASP.NET 网页时,将创建该页的新实例。该页执行其处理,将标记呈现到浏览器,然后该页被丢弃。如果用户单击按钮以执行回发,将创建该页的新实例;该页执行其处理,然后再次被丢弃。这样,每个回发和往返行程都会导致生成该页的一个新实例。

有关更多信息,请参见 创建 ASP.NET 网页

保留页面状态

在标准的 HTTP 协议中,服务器所拥有的与页面有关的所有信息就是用户使用页面上的控件所指定的信息,因为在发送页面时,浏览器仅会将这些信息发送给服务器。其他信息(例如变量值和属性设置)将被放弃。ASP.NET 通过下列方式帮助保留其他页面信息:

  • ASP.NET 会在往返行程间保存控件设置(属性),这种行为称为保存“控件状态”。

  • ASP.NET 提供状态管理功能,以便您可以在往返行程间保存您自己的变量和应用程序特定或会话特定的信息。

  • ASP.NET 可以检测何时第一次请求页面以及何时发送页面,这使您可以相应地进行编程。例如,您可能想要在第一次显示页面(而不是在每次回发)时从数据库读取信息。

    ms178125.alert_note(zh-cn,VS.90).gif说明:

    可以将服务器配置为缓存页信息以优化页,但对于应用程序编程而言,最清晰的方法是将这些页视为在服务器完成对它们的处理后就释放它们。

有关更多信息,请参见 ASP.NET 状态管理概述

ASP.NET 网页编程

您可以使用 .NET Framework 支持的各种语言(包括 Visual Basic、C# 和 J#)为您的 ASP.NET 网页创建服务器代码。ASP.NET 网页可以包含在浏览器中运行的客户端脚本。某些 ASP.NET 功能会生成客户端脚本,并将其插入到页面中。在这种情况下,ASP.NET 始终会生成 ECMAScript (JavaScript),以实现最佳跨浏览器功能。此外,您可以添加自己的客户端脚本以实现自定义功能。如果这样做,便可以使用与目标浏览器兼容的任何客户端脚本语言。

服务器控件

如同任何网页,ASP.NET 网页可以包含静态文本。但是,您通常会向页面添加控件,例如文本框、复选框和按钮。用户可以使用这些控件与页面交互,并在发送回页面时将信息发送到服务器。

ASP.NET 提供一个控件集合,称为“Web 服务器控件”。ASP.NET 服务器控件可能类似于对应的 HTML 窗体元素。例如,ASP.NET 的 TextBox 控件类似于 HTML <input type="text"> 标记。但是,ASP.NET 服务器控件提供的编程体验比 HTML 元素提供的更加丰富。还有一些 ASP.NET 服务器控件拥有比 HTML 元素更为广泛的功能。您可以在 ASP.NET 网页上使用的服务器控件包括:日历控件、显示列表或表格的数据绑定控件、用于向站点添加安全性的登录控件以及其他更多控件。

有关更多信息,请参见 ASP.NET Web 服务器控件概述

页面和服务器控件事件

ASP.NET 网页以及网页上的控件支持事件模型(如同 Windows 窗体中的事件模型)。例如,用户单击 ASP.NET 网页上的 Button 服务器控件时,页面会发回到服务器,然后重新创建该页面,并引发一个 Click 事件。您可以将代码添加到响应此 Click 事件的页面。

初始化页面时,页面本身会引发生命周期事件(如 Page_Init 和 Page_Load 事件),这为您提供了在启动页面时运行代码的机会。(请记住,每次往返行程都会创建页面并重新初始化页面。)每个控件都会引发它自己的事件。按钮控件引发一个 Click 事件,复选框和单选按钮控件引发一个 CheckedChanged 事件,而列表框和下拉列表控件则引发一个 SelectedIndexChanged 事件。某些控件(如 Calendar 控件)引发的事件比简单的 Click 事件更抽象。例如,用户导航至不同的月份时,Calendar 控件引发一个 VisibleMonthChanged 事件。

大多数 ASP.NET 服务器控件仅支持很少的几个可以在服务器代码中处理的事件。要处理某个事件,页面必须执行一次往返行程,以便用户的选择可以发送到页面以待处理。服务器控件不公开诸如 onmouseover 之类的高频率事件,因为每次引发此类事件时,都会发生到服务器的另一个往返行程,这将显著影响页面中的响应时间。但是,您可以将 ASP.NET 服务器控件配置为引发客户端事件,例如 onmouseover。在这种情况下,控件不发送回服务器,因而由您创建客户端脚本来响应事件。

有关创建和使用事件及事件处理程序的更多信息,请参见 ASP.NET 网页中的服务器事件处理

浏览器兼容性

由于 ASP.NET 网页处理发生在 Web 服务器上,因此 ASP.NET 网页与任何浏览器或移动设备兼容。网页自动呈现与浏览器兼容的正确标记(XHTML 或其他标记语言)以实现某些功能,例如样式和布局。您也可以使用专门向特定设备(例如移动电话)呈现输出而设计的控件来创建网页。有关更多信息,请参见创建 ASP.NET 移动网页

请参见

概念

ASP.NET Web 服务器控件概述