ASP.NET 页类概述

在请求 ASP.NET 页且该页将标记呈现给浏览器的过程中,运行的不仅仅是为该页创建的代码。相反,ASP.NET 在运行时会生成并编译一个或多个类来实际执行运行该页所需的任务。本主题概述了在运行时生成的代码。

生成和运行页类代码

ASP.NET 页作为一个单元运行,它将该页中的服务器端元素(如控件)与您编写的事件处理代码结合在一起。您无需将页预编译为程序集。ASP.NET 将动态编译页,并在用户第一次请求页时运行该页。如果对该页所依赖的页或资源进行了任何更改,则将自动对该页进行重新编译。编译器将根据页是使用单文件模型还是代码隐藏模型来创建一个或多个类。

ASP.NET 还支持对网站进行预编译以支持站点部署以及增强性能和执行错误检查。有关更多信息,请参见 ASP.NET 网站预编译概述。预编译适用于单文件模型和代码隐藏页模型,并且两种模型的编译器输出是相同的。

单文件页

在单文件页中,标记、服务器端元素以及事件处理代码全都位于同一个 .aspx 文件中。在对该页进行编译时,编译器将生成和编译一个从 Page 基类派生或从使用 @ Page 指令的 Inherits 属性定义的自定义基类派生的新类。例如,如果在应用程序的根目录中创建一个名为 SamplePage1 的新 ASP.NET 网页,则随后将从 Page 类派生一个名为 ASP.SamplePage1_aspx 的新类。对于应用程序子文件夹中的页,将使用子文件夹名称作为生成的类的一部分。生成的类中包含 .aspx 页中的控件的声明以及您的事件处理程序和其他自定义代码。

在生成页之后,生成的类将编译成程序集,并将该程序集加载到应用程序域,然后对该页类进行实例化并执行该页类以将输出呈现到浏览器。如果对影响生成的类的页进行更改(无论是添加控件还是修改代码),则已编译的类代码将失效,并生成新的类。有关在 ASP.NET 中进行编译的更多信息,请参见 ASP.NET 编译概述

下图显示了单文件 ASP.NET 网页中的页类的继承模型:

类层次结构,单个文件页

代码隐藏页

在代码隐藏模型中,页的标记和服务器端元素(包括控件声明)位于 .aspx 文件中,而您的页代码则位于单独的代码文件中。该代码文件包含一个分部类,即具有关键字 partial(在 Visual Basic 中为 Partial)的类声明,以表示该代码文件只包含构成该页的完整类的全体代码的一部分。在分部类中,添加应用程序要求该页所具有的代码。此代码通常由事件处理程序构成,但是也可以包括您需要的任何方法或属性。

代码隐藏页的继承模型比单文件页的继承模型要稍微复杂一些。模型如下:

  1. 代码隐藏文件包含一个继承自基页类的分部类。基页类可以是 Page 类,也可以是从 Page 派生的其他类。

  2. .aspx 文件在 @ Page 指令中包含一个指向代码隐藏分部类的 Inherits 属性。

  3. 在对该页进行编译时,ASP.NET 将基于 .aspx 文件生成一个分部类;此类是代码隐藏类文件的分部类。生成的分部类文件包含页控件的声明。使用此分部类,您可以将代码隐藏文件用作完整类的一部分,而无需显式声明控件。

  4. 最后,ASP.NET 生成另外一个从在步骤 3 中生成的类继承的类。生成的第二个类包含生成该页所需的代码。生成的第二个类和代码隐藏类将编译成程序集,运行该程序集可以将输出呈现到浏览器。

下图显示了代码隐藏 ASP.NET 网页中的页类的继承模型:

类层次结构,代码隐藏页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值