asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程
通过查看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编译过程的更多相关文章
- asp.net学习之数据绑定控件、数据源控件概述
原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细: ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...
- 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。
客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值. 无论是什么的html控件,只要加上了runat="server" ...
- ASP.NET服务端基本控件介绍
ASP.NET服务端基本控件介绍 大概分为三种控件: HTML控件,ASP.NET把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性,无法在服务端进行处理ASP.NET服务端控件,经过ASP. ...
- (转)客户端触发Asp.net中服务端控件事件
第一章. Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为su ...
- .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器
1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- asp.net动态网站repeater控件使用及分页操作介绍
asp.net动态网站repeater控件使用及分页操作介绍 1.简单介绍 Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功 ...
- Asp.Net Form表单控件的回车默认事件
当form表单文本框控件在收到回车事件时,默认会触发表单内第一个可提交按钮的事件,但业务中可能要求有其它控件进行提交,而不是这个默认的 这时需要脚本控件事件冒泡传递取消回事事件. $(document ...
- ASP.NET动态添加用户控件的方法
本文实例讲述了ASP.NET动态添加用户控件的方法.分享给大家供大家参考.具体实现方法如下: 为了让用户控件能ASP.NET页面实现动态添加,首先写一个接口IGetUCable,这个接口有一个函数,返 ...
随机推荐
- POJ 3243 Clever Y | BSGS算法完全版
题目: 给你A,B,K 求最小的x满足Ax=B (mod K) 题解: 如果A,C互质请参考上一篇博客 将 Ax≡B(mod C) 看作是Ax+Cy=B方便叙述与处理. 我们将方程一直除去A,C的最大 ...
- 牛客 NOIp模拟1 T3 保护 解题报告
保护 题目描述 \(C\)国有\(n\)个城市,城市间通过一个树形结构形成一个连通图.城市编号为\(1\)到\(n\),其中\(1\)号城市为首都.国家有\(m\)支军队,分别守卫一条路径的城市.具体 ...
- JavaScript中继承机制的模仿实现
首先,我们用一个经典例子来简单阐述一下ECMAScript中的继承机制. 在几何学上,实质上几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形. ...
- windows技术
鼠标右键菜单中没有新建文本文件怎么办? http://jingyan.baidu.com/article/046a7b3e1d737bf9c27fa9f7.html
- ectouch 微信支付成功后订单状态未改变的解决办法 (转载)
原文地址: 微信支付支付成功后,返回到mobile/wx_native_callback.php 之前代码 define('IN_ECS', true); require(dirname(__FILE ...
- c++ set容器排序准则
转载两篇博客: http://blog.csdn.net/lishuhuakai/article/details/51404214 http://blog.csdn.net/lihao21/artic ...
- ASP.NET webFrom
web窗体的后缀名.aspx 1.<% %> 标签内的代码在服务器上执行 <body> <form id="form1" runat="se ...
- HDU 2955 【01背包+小数概率】
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- ZOJ 3937 More Health Points (2016 浙江省赛 B题,可持久维护凸壳)
题目链接 2016 ZJCPC Problem B 题意 CF 660F的树上版本. 其他做的方法都差不多,关键是把凸壳放到树上. 每次确定扔掉几个元素的时候直接$O(1)$修改(先不清楚这个位置 ...
- Longest Common Substring($LCS$)
Longest Common Substring(\(LCS\)) 什么是子序列? 子序列就是某一个序列的不连续的一部分. 如图, \(abcde\)就是图中序列的一个子序列. 公共子序列 公共子序列 ...