ASP.NET页面对象模型:Page类介绍-阿里云开发者社区

开发者社区> zting科技> 正文

ASP.NET页面对象模型:Page类介绍

简介:
+关注继续查看

ASP.NET页面对象模型简介

Microsoft Internet 信息服务 (IIS) 所收到的对某 Microsoft ASP.NET 页面的每个请求都被移交给 ASP.NET HTTP 管线。HTTP 管线由一系列托管对象组成,这些对象按顺序处理该请求,并完成从 URL 到普通 HTML 文本的转换。HTTP 管线的入口点是 HttpRuntime 类。ASP.NET 基础结构为辅助进程中所承载的每个 AppDomain 创建此类的一个实例(请注意,该辅助进程为当前正在运行的每个 ASP.NET 应用程序维护一个不同的 AppDomain)。

HttpRuntime 类从内部池中选取一个 HttpApplication 对象,并让其处理该请求。HTTP 应用程序管理器所完成的主要任务就是找出将实际处理该请求的类。如果请求 .aspx 资源,则处理程序就是一个页面处理程序 — 即某个继承自 Page 的类的一个实例。资源类型和处理程序类型之间的关联关系存储于该应用程序的配置文件中。更准确地说,在 machine.config 文件的 < httpHandlers> 部分中定义默认的一组映射关系。然而,应用程序也可以在本地的 web.config 文件中自定义自己的 HTTP 处理程序列表。下面的程序行举例说明了定义用于 .aspx 资源的 HTTP 处理程序的代码。

< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/> 

扩展名可关联到一个处理程序类,或者更普遍地关联到一个处理程序工厂 (handler factory) 类。在所有情况下,负责处理请求的 HttpApplication 对象都会获得一个实现 IHttpHandler 接口的对象。如果根据 HTTP 处理程序来解析关联资源/类,那么所返回的类将直接实现该接口。如果资源绑定到处理程序工厂,则需要另外一个步骤。处理程序工厂类实现 IHttpHandlerFactory 接口,而该接口的 GetHandler 方法返回一个基于 IHttpHandler 的对象。

HTTP 运行时如何能完成整个循环并处理页面请求呢?IHttpHandler 接口特别提供了 ProcessRequest 方法。通过对代表所请求页面的对象调用此方法,ASP.NET 基础结构启动相应过程,从而针对浏览器生成输出。

ASP.NET页面对象模型:Page类

特定页面的 HTTP 处理程序类型取决于 URL。当首次调用 URL 时,将构建一个新类并将该类动态地编译成一个程序集。用于检查 .aspx 来源的语法分析过程的输出结果就是该类的源代码。该类被定义为 ASP 命名空间的一部分,并被赋予一个与原始 URL 相似的名称。例如,如果 URL 终结点是 page.aspx,则类名称为 ASP.Page_aspx。但是,也可通过编程设置 @Page 指令的 ClassName 属性来控制类的名称。

HTTP 处理程序的基类是 Page。此类定义了所有页面处理程序所共享的方法和属性的最小集合。Page 类中实现 IHttpHandler 接口。

在某些情况下,实际处理程序的基类并非 Page,而是一个不同的类。例如,如果使用了代码隐藏,就会出现这种情况。代码隐藏是一种开发方法,它将页面所需的代码封装到一个单独的 C# 或 Microsoft Visual Basic.NET 类中。页面的代码就是一组事件处理程序和帮助器方法,用以实际创建该页面的行为。可以利用 < script runat=server> 标记将这种代码定义为内联代码,或者也可将其放到一个外部类 — 代码隐藏类中。代码隐藏类是一种继承自 Page 的类,但这种类具有一些额外的方法因而比较特殊。如果指定,代码隐藏类就用作 HTTP 处理程序的基类。

还有一种情况,即当应用程序配置文件的 < pages> 部分中重新定义了 PageBaseType 属性时,HTTP 处理程序也不是基于 Page 的。

< pages PageBaseType="Classes.MyPage, mypage" /> 

PageBaseType 属性指出了包含页面处理程序的基类的类型以及程序集。派生自 Page 的这个类可自动给处理程序赋予一组自定义和扩展的方法和属性。

以上就对ASP.NET页面对象模型做了一些简单的介绍。



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/28/1918937.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Netty 源码阅读入门实战(一)-介绍
1 简介 以 Netty 为底层的框架 Netty 是什么 Netty 技术和方法的特点 设计 针对多种传输类型的统一接口 - 阻塞和非阻塞 简单但更强大的线程模型 真正的无连接的数据报套接字支持 链接逻辑支持复用 易用性 大量的 Javadoc 和 代码实例 除了在 JDK 1.6 + 额外的限制。
1407 0
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
即如下: 【想做到点击nav侧边栏,仅替换右边div中的内容,而不是跳转到新的页面,这样的话,其实整个项目中就只有一个完整的页面,其他的页面均只写内的部分即可,或者仅仅写要替换的内的部分即可!!】 index.
1164 0
asp.net 生成静态页面的简单例子
Asp.net生成静态文件示例源码(两种途径) Asp.net生成静态文件(根据时间自动命名保持,默认扩展名是htm可以自行修改)。 通过收入内容替换模板或者url地址两种方式进行静态文件的生成 templete.
710 0
Kubernetes监控之Heapster介绍
什么是Heapster? Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS。 Kubernetes有个出名的监控agent---cAdvisor。在每个kubernetes Node上都会运行cAdvisor,它会收集本机以及容器的监控数据(cpu,memory,filesystem,network,uptime)。
1097 0
实时计算Flink on Kubernetes产品模式介绍
Flink产品介绍 目前实时计算的产品已经有两种模式,即共享模式和独享模式。这两种模式都是全托管方式,这种托管方式下用户不需要关心整个集群的运维。其次,共享模式和独享模式使用的都是Blink引擎。这两种模式为用户提供的主要功能也类似, 都提供开发控制台; 开发使用的都是Blink SQL,其中独享模式由于进入了用户的VPC,部署在用户的ECS上,因此可以使用很多底层的API,如UDX; 都提供一套的开箱即用的metric收集、展示功能; 都提供作业监控和报警功能。
4666 0
详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎
最近业务上有要求,要实现类似oracle 的dblink         linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/mysql/my.cnf windows 版本  Server version: 5.6.21-log MySQL Community Server (GPL) 修
1869 0
Json.Net系列教程 1.Json.Net介绍及实例
原文 Json.Net系列教程 1.Json.Net介绍及实例 本系列教程假设读者已经对Json有一定的了解,关于Json在这里不多说.本系列教程希望能对读者开发涉及到Json的.Net项目有一定的帮 助.本系列教程是根据官方文档资料和自己项目应用汇总而成.如果觉得本系列对你有用,望多多关注.本人还只是个未毕业的学生,水平有限,尽请指正. 一.Json.Net有什么用?   Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。
1101 0
html5 getComputedStyle + resize 实现动态宽高度等比响应式页面设计
序:通常我们只能控制div的宽度 而不能控制高度,在响应式页面里 如果要这个div是正方形那么必须的用媒体查询在不同的分辨率下写死宽高度 今天突发奇想研究了个 用百分比来动态控制div的高度让其与宽度相同 成为一个正方形 甚至任何你想要比例 一,背景:目前移动端大多数图片或视频列表页面的显示,列出...
988 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载