前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AutoEventWireup属性

AutoEventWireup属性

作者头像
全栈程序员站长
发布2022-08-24 13:14:10
4000
发布2022-08-24 13:14:10
举报
文章被收录于专栏:全栈程序员必看

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

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.cn/140085.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档