WebForm页面运行机制

阅读目录

WebForm前台与后台的关系及运行原理

前台页面

 <% @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits ="_Default" %>
 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 < html xmlns ="http://www.w3.org/1999/xhtml">
 < head runat ="server">
     <title > 首页</ title >
 </ head>
 < body>
     <%
     for ( int i = 0; i < 10; i++){
         Response.Write(strHello);
     }
     %> <!--前台页面<%@标记内容都是会在服务器端运行的-->
     <form id="form1" method="post"> <!--form表单默认发送Get请求-->
     <input type="text" id="txtBeauty" name="txtBeauty" runat="server" />
     <input type="submit" />
     <% = strHello %> <!--前台访问后台非私有成员-->
     <% Response.Write(strHello);%>
     </form >
 </ body>
 </ html>

后台页面

 1 using System;
 2 using System.Web.UI;
 3 public partial class _Default : Page {
 4     protected string strHello = "Hi~~piziyimao~~" ;
 5     //仅从使用上面来看:
 6     //ashx和WebForm使用方式都差不多,区别:
 7     //1.被请求时,调用的方法名不同:ashx - ProcessRequest , WebForm - Page_Load(他就是页面生命周期中的事件  页面生命周期就在PR[ProcessRequest]中执行)
 8     //2.WebForm不需要程序员手动的读取模板页了~~
 9     //3.访问Reqeust和Response等ASP.NET内部对象的时候,不需要再通过context点出来了 因为Page类已经包装了Context 而_Default : Page
10     //当页面被请求的时候,这个方法会被自动的调用
11     protected void Page_Load(object sender, EventArgs e) {
12         //前台html控件添加 runat=server 它会在程序编译的时候  成为一个变量存在后台页面对象中 所以后台可以this.点出
13         //this.txtBeauty.Value = "1243658561";//等价于(this.Controls[0] as HTMLInputText).value=...
14         //Response.Write("不是所有痞子都叫一毛" + strHello);//这里的代码会输出在页面html代码之前 可见aspx.cs页面先执行  aspx页面后执行
15         //补充:前台页面和后台页面的关系----------前台页面继承于后台 即1.aspx 继承与1.aspx.cs   前台页面控件编译后 会成为后台对象的属性
16         //this.txtBeauty.RenderControl();//每个Control都包含一个Render方法 此方法返回当前控件所生成的html代码
17         //且RenderControl内部 并非Response.Write 而是直接写入HtmlTextWrite中 所以页面源代码txtBeauty位置 有value属性
18         string strName = Request.Form["txtBeauty" ]; //和ashx拿到页面值做法一样
19         if (!string .IsNullOrEmpty(strName))
20             Response.Write( "不是所有痞子都叫一毛" + strName);
21         else
22             Response.Write( "没有值~~~" );
23         //反编译图片证实 aspx与aspx.cs关系以及页面控件树生成过程
24     }
25 }

页面控件树生成详解:

总结:

1、对于asp.net来说  动态页面aspx或ashx被浏览器请求时都是作为类的对象来运行的而不是像处理静态页面html或者图片jpg一样直接读取文件里的内容

  【他们被请求的时候就是一个页面类对象  里面有很多的控件属性(但非html代码本身) 在执行到页面ProcessRequest方法内部执行Page_Load事件之后

  调用每个控件对象的Render方法生成对应的html代码】

2、webForm前后台页面aspx、aspx.cs文件在被访问时会被编译成类  前台页面类继承与后台页面类

3、被访问时服务器会创建【前台页面类】对象来作为处理浏览器请求的对象

4、前台类对象是如何结合后台类的方法  生成整个页面的html代码的呢?==》被请求时  生成页面控件对象树控件树负责组合整个页面的内容(_BuildControlTree--生成控件树方法)

  【打造控件树的目的就是将页面html代码、服务端代码 runat=server部分代码整合在一起】

5、继承关系:前台页面类-》后台页面类-》page-》TemplateControl-》Control(包含ControlCollection集合)通过反编译可以查看到【总结:页面就是控件

时间: 2024-08-29 19:24:44

WebForm页面运行机制的相关文章

【转载】ASP.NET页面运行机制以及请求处理流程

本文转至 ASP.NET页面运行机制以及请求处理流程 IIS处理页面的运行机制 IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件,之所以能处理ASPX这样扩展名的页面,是因为IIS有一个ISAPI过滤器,它是一个COM组件.ASP.NET服务在注册到IIS的时候,就会添加一个Win32的扩展动态库aspnet_isapi.dll.并将扩展可以处理的页面扩展名(如ASPX)注册到IIS里面.扩展启动后,就根据定义好的方式来处理IIS所不能处理的页面. 当客户端请

【.NET特供-第三季】ASP.NET MVC系列:传统WebForm网站和MVC网站运行机制对比

本文以图形化的方式,从'运行机制'方面对比传统WebForm网站和MVC网站. 请参看以下图形: 一.运行机制 当我们访问一个网站的时候,浏览器和服务器都是做了哪些动作呢? (本文只是提供一个简单的运行过程,有兴趣的找资料研究一下复杂的网络过程.) (一)WebForm网站运行机制 假设为:www.baidu.com/index.aspx 1.Http请求(物理地址:index.aspx) ①发送请求 浏览器向服务器发送请求报文,此时由IIS虚拟目录接受.(通过配置过IIS,把网站挂载在服务器上

ASP.NET运行机制原理 ---浏览器与IIS的交互过程 自己学习 网上查了下别人写的总结的很好 就转过来了 和自己写的还好里嘻嘻

一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收处理,它会分析接收到的请求信息,从而按照请求信息来找到服务器电脑上的文件,经过处理,最终将生成的内容发回到浏览器. 简单的说就是:由浏览器生成一条“命令”,通过互联网发给另一台电脑的某个软件(服务器软件):服务器软件接收到“命令”,就分析理解这个“命令”,然后按

WebForm页面生命周期及asp.net运行机制

1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不会处理类和动态页面,所以找扩展程序 4.交给FrameWork,它其中有个类HttpRuntime,其中有个ProcessRequest()方法 5.ProcessRequest()创建了HttpWorkerRequest对象,把请求报文都封装在其中(HttpWorkerRequest中有个指针,它

ASP.NET学习笔记——webform页面生命周期

webform运行原理 运行原理相同点:aspx和ashx运行机制差不多. 运行原理不同点: 1.执行事件管道的时候,在7,8个事件之间创建的是前台页面类对象,那后台类是什么时候创建的呢?由于aspx前台页面继承自后台,所以创建前台页面类时,后台就创建好了. 2.在第11.12事件之间,调用存放在remapHandler中的前台页面类对象的processRequest方法,会进行复杂的处理,也就是走页面生命周期. webform页面生命周期 1.通过反编译,查看前台类代码 前台代码P01Inde

ASP.NET 运行机制

原本今天打算继续写ASP.NET MVC第四天的.但是由于里面涉及到asp.net运行机制的原理,如果不分析一下这里,mvc想说清楚还是挺困难的.既然要提到asp.net运行机制,所以打算还是说详细一点的好.记录mvc第一天的时候就说过,asp.net mvc也是基于asp.net运行机制的(也就是原理).网上也有很多讲解asp.net运行机制的,我在这里说一下自己的认识,我们开始吧. 我们从web程序的入口开始.那就要先说到iis了,大家都知道,这是web服务软件.将web程序部署到iis过的

深入理解struts的运行机制

在此申明本博文并非原创,原文:http://blog.csdn.net/lenotang/article/details/3336623,本文章是在此文章基础上进行优化.也谈不上优化,只是加上了点自己的想法 jar包准备 为什么会用到这两个jar包呢,因为我需要通过这个jar来解析xml配置文件. 新建项目 流程梳理 struts配置文件 <?xml version="1.0" encoding="UTF-8"?> <struts> <

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

PS: 我先旁观下大师们的讨论,得多看书了~ 别人说的:“看了一下不觉得评注对到哪里去,只有吹毛求疵之感. 比如同步异步介绍,本来就无大错:比如node图里面的OS operation,推敲一下就可以猜到那是指同步操作(自然不走event loop了):至于watcher啥的,显然只是实现上的特色,即使用同一个queue实现也未尝不可” [原帖: http://www.ruanyifeng.com/blog/2014/10/event-loop.html 作者:阮一峰] 一年前,我写了一篇<什么

【repost】JavaScript 运行机制详解:再谈Event Loop

一年前,我写了一篇<什么是 Event Loop?>,谈了我对Event Loop的理解. 上个月,我偶然看到了Philip Roberts的演讲<Help, I'm stuck in an event-loop>.这才尴尬地发现,自己的理解是错的.我决定重写这个题目,详细.完整.正确地描述JavaScript引擎的内部运行机制.下面就是我的重写. 进入正文之前,插播一条消息.我的新书<ECMAScript 6入门>出版了(版权页,内页1,内页2),铜版纸全彩印刷,非常