第一次请求default.aspx页面时会发生什么?
.net是纯粹的面向对象的框架.
_default是一个扩展Page的类.
无需实例化,无法调用Pre-Init,Init,Load.那么_default类是如何实例化的呢?谁对此负责?
我想知道非常详细的技术步骤?
Pleasa澄清!
ASP.Net框架识别该请求是针对该页面default.aspx并检查相应的.aspx文件的标记 - 使用它来生成基于该标记的类.该类的基类在@Page指令中标识:
<%@ Page ... Inherits="WebApplication1._Default" %>
Run Code Online (Sandbox Code Playgroud)
然后它创建该生成类型的实例- 在这种情况下,此类型继承自给定的基类WebApplication1._Default.
ASP.Net框架通常(永远不会)直接创建"代码隐藏"类的实例.
您可以通过调试简单的Web应用程序来自行查看:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// default_asp NOT _Default as you might expect
string typeName = this.GetType().Name;
}
}
Run Code Online (Sandbox Code Playgroud)
这解释了为什么事件处理程序只需要标记为受保护而不是公共.
如果您非常热衷于使用this.GetType().Assembly.CodeBase,可以获取生成的程序集的路径 ,请复制该文件并检查生成的类,如IL Spy.
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |