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盘中

如下图所示:


相关文章
|
4月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
52 8
|
2月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
|
3月前
|
开发框架 JavaScript 前端开发
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
4月前
|
存储 C#
揭秘C#.Net编程秘宝:结构体类型Struct,让你的数据结构秒变高效战斗机,编程界的新星就是你!
【8月更文挑战第4天】在C#编程中,结构体(`struct`)是一种整合多种数据类型的复合数据类型。与类不同,结构体是值类型,意味着数据被直接复制而非引用。这使其适合表示小型、固定的数据结构如点坐标。结构体默认私有成员且不可变,除非明确指定。通过`struct`关键字定义,可以包含字段、构造函数及方法。例如,定义一个表示二维点的结构体,并实现计算距离原点的方法。使用时如同普通类型,可通过实例化并调用其成员。设计时推荐保持结构体不可变以避免副作用,并注意装箱拆箱可能导致的性能影响。掌握结构体有助于构建高效的应用程序。
134 7
|
4月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
|
5月前
|
开发框架 .NET API
.NET Core 和 .NET 标准类库项目类型有什么区别?
在 Visual Studio 中,可创建三种类库:.NET Framework、.NET Standard 和 .NET Core。.NET Standard 是规范,确保跨.NET实现的API一致性,适用于代码共享。.NET Framework 用于特定技术,如旧版支持。.NET Core 库允许访问更多API但限制兼容性。选择取决于兼容性和所需API:需要广泛兼容性时用.NET Standard,需要更多API时用.NET Core。.NET Standard 替代了 PCL,促进多平台共享代码。
|
6月前
|
存储 编译器
【.NET Core】可为null类型详解
【.NET Core】可为null类型详解
225 0