通过查看asp.net的整个生命周期之后

了解到在aspx的页面生命周期中

调用了BuildControlTree()方法生成页面控件树

之后再调用Rend()方法根据控件树生成html返回

aspx页面上有3种控件类型

1.html标签,在服务器端被当作字符串,不做特殊处理

     2.runat="server"标签,那么在网站编译程序集的时候,该页面的后台类会自动创建一个Protect

修饰的服务器控件类对象(如:protected HtmlGenericControl divMsg;)

正是因为protect,在后台类中可以访问,在其子类前台类中也可以访问(注意:这个控件变量中有一

个Render方法专门根据该控件的属性来生成对应的html字符串)

     例子:

       protected HtmlGenericControl divMsg;

                  protected HtmlForm form1;

                  protected HtmlImage imgs;

                  protected HtmlGenericControl spanMsg;

                  protected string strName;

                  protected HtmlInputText txtName;

     HtmlGenericControl主要对应非表单控件的标签

     3.ASP服务器控件<ASP:Button>,此种控件必须放在runat=server的form中。服务器专属控件

     与第二种控件的区别:runat="server"控件在后台访问时,其属性等都和html标签一样访问,

而ASP服务器控件在后天访问属性时像winform的控件一样访问,如:

1.后台是string(添加到控件树时时LiteralControl)类

2.runat="server"控件在后台生成的变量是HtmlForm等这些类

3.ASP服务器控件后台生成的是Button等这些类

根据不同的控件类型

将在生命周期中对应着不同的处理方式

这就是为什么服务器端的控件响应速度慢,html代码被当做字符串不做特殊处理原样返回当然比要经过一系列转换和生成的服务器控件响应速度快呀~

aspx的页面状况:

1.当页面上没有包含任何服务器端语言的时候(<%%>、 runat="server"),整个页面作为 文本

资源供程序集使用。

     2.当页面中包含 <%%>和html代码字符串时,当前前台页面类里会自动生成一个 方法,这个方法

中 向一个写出器对象里 吸入页面的html代码,和执行 <%%>内的内容。

     3.当页面中既包含<%%>、html代码字符、runat=server的html、服务器控件标签时,那么前台页

面类会为每个runatserver的控件都创建一个方法,并通过 buildControlTree方法来组织各个控

件的依赖(包含)关系

Asp编译过程:

Client->Server->.Net Framework->判断内存中是否有相应的机器码->有,则交给cup执行返回给上一层,没有,则判断c盘中是否有相应的中间代码文件->有,则交给jit编译生成机器码返回给上一层并存在内存中,没有则将对应的aspx文件和aspx.cs合并用中间语言编译成一个类返回给上一层并存在C盘中

如下图所示:

asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程的更多相关文章

  1. asp.net学习之数据绑定控件、数据源控件概述

    原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细:      ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...

  2. 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。

    客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值.     无论是什么的html控件,只要加上了runat="server" ...

  3. ASP.NET服务端基本控件介绍

    ASP.NET服务端基本控件介绍 大概分为三种控件: HTML控件,ASP.NET把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性,无法在服务端进行处理ASP.NET服务端控件,经过ASP. ...

  4. (转)客户端触发Asp.net中服务端控件事件

    第一章. Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为su ...

  5. .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

    1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...

  6. asp.net学习之Repeater控件

    asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...

  7. asp.net动态网站repeater控件使用及分页操作介绍

    asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...

  8. Asp.Net Form表单控件的回车默认事件

    当form表单文本框控件在收到回车事件时,默认会触发表单内第一个可提交按钮的事件,但业务中可能要求有其它控件进行提交,而不是这个默认的 这时需要脚本控件事件冒泡传递取消回事事件. $(document ...

  9. ASP.NET动态添加用户控件的方法

    本文实例讲述了ASP.NET动态添加用户控件的方法.分享给大家供大家参考.具体实现方法如下: 为了让用户控件能ASP.NET页面实现动态添加,首先写一个接口IGetUCable,这个接口有一个函数,返 ...

随机推荐

  1. BZOJ 1208 [HNOI2004]宠物收养所 | SPlay模板题

    题目: 洛谷也能评 题解: 记录一下当前树维护是宠物还是人,用Splay维护插入和删除. 对于任何一次询问操作都求一下value的前驱和后继(这里前驱和后继是可以和value相等的),比较哪个差值绝对 ...

  2. spring in action 学习十二:property placeholder 注解的方式实现避免注入外部属性硬代码化

    这里的注解是指@PropertySource这个注解.用@PropertySource这个注解加载.properties文件. 案例的目录结构如下: student.properties的代码如下: ...

  3. font-family 定义的最后为什么要加一句sans-serif

    定义font-family时,最好在最后加一个sans-serif,这样如果所列出的字体都不能用,则默认的sans-serif字体能保证调用; W3C建议字体定义的时候,最后以一个类别的字体结束,例如 ...

  4. C语言浮点数存储方式

    对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用 32bit,double数据占用 64bit.其实不论是float类型还是double类型,在计算 ...

  5. symfony3常用记忆

    1.控制器里获取当前用户信息 $user = $this->getUser(); 2.判断当前用户是否登录 // yay! Use this to see if the user is logg ...

  6. authencated认证登录

    #coding:utf-8 import tornado.httpserver import tornado.ioloop import tornado.options import tornado. ...

  7. ANDROID开发笔记(二)

    动机: 开发的一个背单词的软件. 不会实现划屏的特性. 方法: 第一步尝试: 在MainActivity中, 增加以下代码后, 如果在视图的空白处点击时, 文本框中的时间就会发生改变. @Overri ...

  8. python--optparse

    import optparse op = optparse.OptionParser() op.add_option("--s", dest="server") ...

  9. ADO 右键问题,当dbgrideh非只读的时候,会遇到这个问题

    /// <summary> /// 再选中列上右键造成,选中这列的状态变化的情况的修复 /// </summary> procedure TfrmMain.XuanYouJia ...

  10. Linux操作常识

    1.分区 linux如果手动选择分区,必须的两个分区是根分区和swap分区,swap分区是与内存的交换分区,通常设置大小为内存的两倍(如果内存够大也可以不用设置) 2.关机重启      命令:shu ...