<%@ page Language="C#" AutoEventWireup="true" CodeBehind="ForestIndex.aspx.cs" Inherits="GZLY.ForestSource.ForestIndex">
学习过asp.net的同学,对上面这句话应该非常熟悉,因为每当我们新建一个.aspx页面的时候;上面这句话就会出现在.aspx这个页面最上方。
解释:
@page 表示所使用的是page页面,也就是aspx页面;
Language=“C#”表示的使用的是C#语言;
AutoEventWireup:asp.net页框架支持以自动方式将页面事件与方法相关联。如果Page指令的AutoEventWrieup属性被设置为true(默认为true),该页框架将自动调用页事件,即Page_Init和Page_Load方法。在这种情况下,不需要任何显示的handles子句或者委托;
AutoEventWireup=”true”这一属性决定了当前页是否自动关联某些特殊事件,从浏览器触发的事件不能立刻在本地得到处理,而是post到服务器上,因此,asp.net建立了委托(代理)机制,建立一个事件的时候建立了相应的委托:
Inherits是继承的意思:Inherits:表明该文件继承自哪个命名空间的哪个类 (不是你理解的命名空间)
每个aspx文件都对应一个cs文件,而cs文件里的类一般和文件同名
下面的代码就是建立委托的过程:
private void InitializeComponent()
{
this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委托
}
private void Button1_Click(object sender, System.EventArgs e)
{
//事件内容
}
委托将事件与该页面显式关联,如果没有设置AutoEventWireup=”true”,事件将不执行;则需要这样写:
//先建立委托
private void InitializeComponent()
{
this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委托
this.Load += new System.EventHandler(this.Page_Load);//可以用AutoEventWireup属性避免的委托
}
//再执行相应的方法
private void Page_Load(object sender, System.EventArgs e)
{
// 事件内容
}
private void Button1_Click(object sender, System.EventArgs e)
{
//事件内容
}
AutoEventWireup属性设置为true的缺点:
页面不需要关联如此多的特殊事件,会增加额外的操作和系统开销。
asp.net页面框架自动调用事件处理的方法基于其预定名称,这会导致相同事件处理方法当页面运行时被调用两次,增加系统的开销。
·
最后:Microsoft建议将AutoEventWireup设置为false;
当 Visual Studio 为 Web 窗体页创建页和类文件时,它将生成从基 Page 类继承的代码(
cs文件继承自System.Web.UI.Page类,而且只能必须继承该类.原因就是aspx文件是继承cs文件的)
在Default.cs文件中有类似代码:
public partial class Default : System.Web.UI.Page
System.Web.UI.Page 派生一个名为 Default 的新类
然后 .aspx 页文件又从派生的 Default 类继承:
Inherits="GZLY.ForestSource.ForestIndex"