@Page指令之AutoEventWireup属性小解
来源:互联网 发布:windows 磁盘分区 编辑:程序博客网 时间:2024/05/21 05:22
当AutoEventWireup属性设为“false”时会出现一重比较不常见的情况,如果你不熟悉@Page指令可能会一时不知道原何:当AutoEventWireup=“false”时调试跟踪Page_Load不被运行,而页面看一呈现,页面回传调用服务器方法是就可能因为一些Page_Load里的工作没做出现错误。AutoEventWireup属性指示控件的事件是否自动匹配
使用Asp.NET时,新建的aspx页面第一行page指令中包含了一个AutoEventWireup属性。网上的很多教程认为这一属性,甚至这一行代码都是没用的。其实,这是不了解Asp.NET事件处理模型的表现。简单来说,这一属性决定了当前页是否自动关联某些特殊事件。
首先,从浏览器页面触发的事件不能立刻在本地得到处理,而是POST至服务器上,因此,Asp.NET建立了委托(代理)机制。在建立一个事件的同时,建立相应的委托:
private void InitializeComponent()
{
this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委托
}
private void Button1_Click(object sender, System.EventArgs e)
{
//事件内容
}
委托将事件与该页面显式关联。在AutoEventWireup="false"时,如果没有委托,事件将不执行。
这与早期VB采用的隐式事件挂起截然不同,各有利弊。但,Asp.NET中可以修改AutoEventWireup="true",使页面与某些特殊的事件方法绑定,自动识别这些具有特定名称的事件,而不需要进行委托。这些特定名称包括:Page_Init, Page_Load, Page_DataBind, Page_PreRender和Page_Unload等。比如:
private void Page_Load(object sender, System.EventArgs e)
{
// 事件内容
}
针对这些事件方法,开发人员可以利用该参数避免编写过多的链接代码。如果该属性设置为"false",则代码应改为:
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)
{
//事件内容
}
一定不可以在没有委托的情况下使用Page_Load类似的方法!
大部分情况下,页面不需要关联如此多的特殊事件,会增加额外的操作和系统开销。同时, ASP.NET 页框架自动调用事件处理的方法基于其预定名称,这会导致到相同事件处理方法当页运行被调用两次,也会增大系统开销。因此,Microsoft 建议始终将 AutoEventWireup 设置为 FALSE。
@ Page指令的说明:
http://msdn2.microsoft.com/en-us/library/ydy4x04a(vs.71).aspx
ASP.NET 服务器控件事件模型
http://msdn2.microsoft.com/en-us/library/59t350k3(vs.71).aspx
- @Page指令之AutoEventWireup属性小解
- @Page指令中的AutoEventWireup
- @Page指令中的AutoEventWireup
- B/S开发(二) ASP.NET Page指令之AutoEventWireUP
- 领悟@Page指令中的AutoEventWireup
- <%@ Page%> page指令属性
- JSP指令之page的属性
- JSP指令之page的属性
- AutoEventWireup属性
- AutoEventWireup属性
- page指令属性
- page指令属性
- page指令属性
- AutoEventWireup指令分析
- page指令的isThreadSafe属性
- ASP.NET @Page指令属性
- JSP page指令相关属性
- JSP之page指令
- 初来乍到
- 如何让网页div图层居中显示
- 不可恢复的生成错误
- IDE SATA 硬盘类型的比较
- Sys_refcursor
- @Page指令之AutoEventWireup属性小解
- Socket編程--簡單非同步(異步)服務端與客戶端示例
- 让你的程序更加完美
- 处理CSV格式行的算法
- 关于中文乱码问题的一些解决方案和经验
- 第二章 用户接口 第一节 简介
- 第二章 第二节 取得键盘输入
- 2007年十大财经新闻
- 第二章 第三节 取得鼠标输入