asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37543103 通过查看asp.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/37543103

通过查看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盘中

如下图所示:


相关文章
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
367 8
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
565 6
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
577 1
|
开发框架 .NET 开发工具
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
286 0
|
Android开发
.Net 转战 Android 4.4 日常笔记目录
原文:.Net 转战 Android 4.4 日常笔记目录 .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建 .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序 .
1026 0
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
1086 0
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
1082 5
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
614 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
463 0