AutoEventWireup属性

AutoEventWireup属性aspx页面第一行page指令中包含了一个AutoEventWireup属性2008-09-1417:15使用Asp.NET时,新建的aspx页面第一行page指令中包含了一个AutoEventWireup属性。网上的很多教程认为这一属性,甚至这一行代码都是没用的。其实,这是不了解Asp.NET事件处理模型的表现。简单来说,这一属性决定了当前页是否自动关联某些特殊事件。…

大家好,又见面了,我是你们的朋友全栈君。

aspx页面第一行page指令中包含了一个AutoEventWireup属性
2008-09-14 17:15

使用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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140085.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月8日 上午6:40
下一篇 2022年5月8日 上午6:40


相关推荐

  • js中为对象添加属性

    js中为对象添加属性一 在普通 js 中打印结果 打印结果 2 在 vue 中使用利用 this set 对象名 属性名 属性值 或者 Vue set 对象名 属性名 属性值 注 属性名用引号打印结果

    2026年3月19日
    2
  • lambda表达式pythonlist_python lambda表达式简单用法【转】「建议收藏」

    lambda表达式pythonlist_python lambda表达式简单用法【转】「建议收藏」1、lambda是什么?看个例子:g=lambdax:x+1看一下执行的结果:g(1)>>>2g(2)>>>3当然,你也可以这样使用:lambdax:x+1(1)>>>2可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:1defg(x):2returnx+1非常容易理解,在这里lambda简化了函数定义的书…

    2022年10月17日
    5
  • UPX 脱壳初见

    UPX 脱壳初见1.壳是什么?加壳一般是指保护程序资源的方法.脱壳一般是指除掉程序的保护,用来修改程序资源.病毒加壳技术与脱壳杀毒方法:壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。壳,在我们的印象中,它的作用就是保护,例如龟壳,这是传统意义上的壳,通常被用来保护自己;今天我们讨论的壳是程序的壳,它的功能和一般意义上的壳有相同的地方,它们都是保护作用,在一…

    2022年7月19日
    20
  • Android View 深度分析requestLayout、invalidate与postInvalidate「建议收藏」

    Android View 深度分析requestLayout、invalidate与postInvalidate「建议收藏」前言前几篇文章中,笔者对View的三大工作流程进行了详细分析,而这篇文章则详细讲述与三大工作流程密切相关的两个方法,分别是requestLayout和invalidate,如果对Viwe的三个工作流程不熟悉的读者,可以先看看前几篇文章,以便能更容易理解这篇文章的内容。

    2022年6月2日
    40
  • 构建私有云的五个步骤

    构建私有云的五个步骤如今 企业在业务中越来越多地采用新技术 也许他们执行一些特定的任务 超出了日常关注的 IT 管理工作 也许他们是有用的某种特定的工具 但并不是任何正式工作流程或过程的一部分 也许这是他们提高效率的一种方式 可以逐步采用一个服务器或一组应用程序 在早期 虚拟化大多属于后一类 在 21 世纪初期 许多企业急切地寻求避免购买服务器和其他 IT 设备的方法 服务器虚拟化很

    2026年3月18日
    2
  • 效率最快的求闰年算法

    效率最快的求闰年算法闰年计算 1 能被 4 整除而不能被 100 整除 如 2004 年就是闰年 1900 年不是 2 能被 400 整除 如 2000 年是闰年 算法 publicboolea longyear return year amp 3 0 amp amp year 100 0 year 400 0

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号