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集合)通过反编译可以查看到【总结:页面就是控件】
WebForm页面运行机制的更多相关文章
- 【转载】ASP.NET页面运行机制以及请求处理流程
本文转至 ASP.NET页面运行机制以及请求处理流程 IIS处理页面的运行机制 IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件,之所以能处理ASPX这样扩展名的页 ...
- 简述ASP.NET的页面运行机制
在深入学习ASP.NET之前,首先需要先了解一下ASP.NET的页面运行机制: 浏览以下内容需要对ASP.NET管道有一定的了解,附上很不错的几个链接: 选择HttpHandler还是HttpModu ...
- ASP.NET运行机制原理
ASP.NET运行机制原理 一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过 ...
- ASP.NET运行机制原理 ---浏览器与IIS的交互过程 自己学习 网上查了下别人写的总结的很好 就转过来了 和自己写的还好里嘻嘻
一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问 ...
- WebForm页面生命周期及asp.net运行机制
1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不 ...
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...
- ASP.NET 运行机制
原本今天打算继续写ASP.NET MVC第四天的.但是由于里面涉及到asp.net运行机制的原理,如果不分析一下这里,mvc想说清楚还是挺困难的.既然要提到asp.net运行机制,所以打算还是说详细一 ...
- 深入理解JavaScript运行机制
深入理解JavaScript运行机制 前言 本文是写作在给团队新人培训之际,所以其实本文的受众是对JavaScript的运行机制不了解或了解起来有困难的小伙伴.也就是说,其实真正的原理和本文阐述的并不 ...
- javascript运行机制
太久没更新博客了,Javascript运行机制 Record it 1.代码块 JavaScript中的代码块是指由<script>标签分割的代码段.例如: <script type ...
随机推荐
- PHP UTF-8和Unicode编号互转
PHP UTF-8和Unicode编号互转 /** * utf-8 转unicode * * @param string $name * @return string */ function utf8 ...
- vi/vim使用指北 ---- Beyond the Basic
更多的组合命令 [number]-[command]-[test object] number: 数字 comand: c,d,y (修改,删除,复制) test object: 移动光标的命 ...
- java 驼峰命名
jstl中前台jsp页面调用对象中的属性时, 用的是小驼峰命名法. 例如:${item.createTime} 1.小驼峰式命名法(lower camel case): 第一个单字以小写字母开始,第二 ...
- MySQL 5.1参考手册
目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. My ...
- JDBC 程序的常见错误及调试方法
详细介绍:http://dev.mysql.com/doc/refman/5.5/en/error-handling.html http://dev.mysql.com/doc/refman/5.5/ ...
- Ajax的进阶学习(二)
JSON和JSONP 如果在同一个域下,$.ajax()方法只要设置dataType属性即可加载JSON文件.而在非同域下,可以使用JSONP,但也是有条件的. Ajax进阶.html: <!D ...
- IDA 与VC 加载符号表
将Windbg路径下的symsrv.yes 拷贝到ida 的安装目录,重新分析ntoskrnl.exe, 加载本地的符号表 添加环境变量 变量名:_NT_SYMBOL_PATH变量值:SRV*{$P ...
- 使用git整体流程
一.git提交代码走meger请求的整体流程 工作中使用git推代码时,如果走merge请求,那么也就是说拉代码时拉公共代码库的代码,但是提交时需要先提交到自己的代码库,然后在gitlab上提交mer ...
- 基于Mongodb的轻量级领域驱动框架(序)
混园子也有些年头了,从各个大牛那儿学了很多东西.技术这东西和中国的料理一样,其中技巧和经验,代代相传(这不是舌尖上的中国广告).转身回头一望,几年来自己也积累了一些东西,五花八门涉猎到各种方向,今日开 ...
- git入门-分支
1. git分支简介 使用分支可以让你从开发主线上分离开来,然后在新的分支上解决特定问题,同时不会影响主线.像其它的一些版本控制系统,创建分支需要创建整个源代码目录的副本.而Git 的分支是很轻量级的 ...