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页面对象模型做了一些简单的介绍。

ASP.NET页面对象模型:Page类介绍相关推荐

  1. ASP.NET 页面对象模型

    对由 Microsoft® Internet 信息服务 (IIS) 处理的 Microsoft® ASP.NET 页面的每个请求都会被移交到 ASP.NET HTTP 管道.HTTP 管道由一系列托管 ...

  2. asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件...

    public class BasePage:Page protected override void OnPreLoad(EventArgs e) {      base.OnPreLoad(e); ...

  3. Java后台实现分页的对象模型Page类分析

    实现分页需要几个属性: pageNo 当前页码 pageTotal 总页码 pageTotalCount 总记录数 pageSize 每页显示数量 items 当前页数据 每个属性赋值途径: page ...

  4. asp.net夜话之五:Page类和回调技术

    asp.net夜话之五:Page类和回调技术 在今天我主要要介绍的有如下知识点: Page类介绍 Page的生命周期 IsPostBack属性 ClientScriptManager类 回调技术(Ca ...

  5. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

    作者:Dflying Chen (http://dflying.cnblogs.com/) 本系列有三篇文章: ASP.NET Atlas简单控件介绍--Sys.Component基类与Sys.UI. ...

  6. java webdriver page object_Selenium2(java)页面对象模型(Page Object) 八

    在开发一个 Selenium WebDriver 测试,我们可以使用页面对象模型.这个模型可以使测 试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来.对象模型也提供了一个注释,帮助缓存远程,避 ...

  7. ASP.NET基础与入门:WebForm,事件驱动编程,Page类

    注:因为这个暑假做了一个ASP.NET的项目(WebForms模式),暑假期间太忙没有来得及整理,现在统一梳理下知识(有些我认为可以跟HTML共通的就没记) 推荐几个学习ASP.NET的网站: W3S ...

  8. 四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)

    有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中 企业应用中为了快速开发到可以用一用 因为这是一类"沉重"的组件 我们姑且不谈这种看法的正确 ...

  9. ASP.NET页面缓存介绍

    尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...

最新文章

  1. (转)spring源码解析,spring工作原理
  2. SQL数据库入门基础
  3. MATLAB 2018a软件安装教程
  4. 希望今年能看懂和写出这样的Swift代码
  5. 几款开源的图形化Redis客户端管理软件推荐
  6. Oracle 生成随机密码
  7. PID控制器改进笔记之四:改进PID控制器之设定值响应
  8. 解密昇腾AI处理器--DaVinci架构(存储系统)
  9. leetcode - Minimum Depth of Binary Tree
  10. 【python】获取http响应
  11. c# midi播放器_C#中的MIDI文件切片器和MIDI库
  12. 使用iperf测试网速
  13. 网吧组建及相关技术(无盘技术;VLAN;PacketTrace)
  14. 用scratch编写游戏-数字华容道
  15. iOS-音频 + 视频
  16. HDU6411 带劲的and和(2018百度之星复赛,并查集,位运算,思路)
  17. PicPick软件系统语言设置
  18. 阿里主流开源框架大汇总
  19. 安全基础--18--嵌入式基础之系统硬件
  20. -1-0 Java 简介 java是什么 java简单介绍

热门文章

  1. QML基础类型之vector2d
  2. c++桥接模式bridge
  3. html纵向文本,html – 垂直对齐CSS圈中多行的文本
  4. mysql物理备份迁移注意细节_物理拷贝备份mysql到其他机器上恢复
  5. phpgif图片包_php生成动态验证码gif图片
  6. oracle10g 6.0更改5.2,Oracle 10G 10.2.0.1升级到10.2.0.5
  7. python中代理模式分为几种类型_代理模式
  8. centos 管道符取第一行_CentOS 7 文件操作命令
  9. 28,29_激活函数与GPU加速、Tanh和sigmoid、ReLU、Leaky ReLU、SELU、Softplus、GPU accelerated、案例、argmax
  10. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数