详细AutoEventWireup <@ Page language=c# AutoEventWireup=”false”和“True”>的研究

详细AutoEventWireup <@ Page language=c# AutoEventWireup=”false”和“True”>的研究@Page里面的属性是ASP.NET页面中最基础的组成部分。可也包涵了很多麻烦在里面,因为种种原因导致必须研究一下这个属性AutoEventWireupAutoEventWireup用我的理解方式是这样:(Auto解释是自动,Event解释是事件,Wire解释关联结构模式,up解释是在上面)个人理解的方式来推断这个属性所实现的功能。首先,从浏览器触发的事件不能理科在本地得

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

 @ Page 里面的属性是ASP.NET页面中最基础的组成部分。可也包涵了很多麻烦在里面,因为种种原因导致必须研究一下这个属性AutoEventWireup

AutoEventWireup 用我的理解方式是这样:(Auto解释是自动,Event解释是事件,Wire解释关联结构模式,up解释是在上面)

个人理解的方式来推断这个属性所实现的功能。

首先,从浏览器触发的事件不能理科在本地得到处理,而是post至服务器上,因此,ASP.NETt建立了委托(代理)机制。在建立一个事件的同时,建立相应的委托:

private void initializeComponent()

     {

      this.mybutton.Click+=new System.EventHandler(this.Button1.Click);  //委托

     }

private void Button1_Click(object sender,System.Eventargs e)

 {

  //事件内容

 }

    委托将事件与该页面显式关联,在Autoeventwireup=”false”时,如果没有委托,事件将不执行。

   

 Autoeventwireup=”true”,使页面与某些特殊的事件绑定,自动识别这些具有特定名称的事件,而不需要进行委托。这些特定的名称包括:Page_Init,Page_Load,Page_DataBind,PagePreRender和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 指令的 AutoEventWireup 属性被设置为 true(或者如果缺少此属性,因为它默认为 true)

当AutoEventWireup为true时,html中服务端脚本才被执行,结果才会出来在页面!

反过来说,当AutoEventWireup为false时,却有它的好处,为什么? 当然就是因为我们常常用的后代码技术,如果当AutoEventWireup为true时,页面会执行两次,.net环境会执行一次来运行html中包含的服务器端脚本,另外一次来执行后代码中的各个函数。

例:写一个asp.net页面(包含服务端脚本)

<@ Page language=c# AutoEventWireup=”false” Inherits=”Chapter3.ch21″ %>
<html>
<script language=c# runat=server>
void Page_Load(object sender, EventArgs e)
{

lblMessage.Text=”<a href=’http://techmango.com’>Thinking in Techmango.com</a>”;
}
</script>
<body>
<form runat=server>
<asp:label id=lblMessage runat=server />
</form>
</body>
</html>

运行后结果什么都不显示,当然就是因为AutoEventWireup被设置成“false”。

此文章内容参考了很多网上博客的文章;

感谢博客园id:钱途无梁

感谢doc88作者:fuqifalilu

感谢搜狐博客ID:累了的候鸟


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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 夜深人静写算法(二十六)- 记忆化搜索

    夜深人静写算法(二十六)- 记忆化搜索记忆化搜索=搜索+动态规划

    2022年7月26日
    12
  • 京东自动签到「建议收藏」

    京东自动签到「建议收藏」结果展示第一步:GitHub注册1.首先打开官网GitHub2.注册页面填入信息(如有账号不需要这一步)第二步:Sever酱配置1.打开server酱的官网http://sc.ftqq.com/3.version2.点击右上角登入链接3.会跳入GitHub授权页,在该页面填入你的上方注册的GitHub账号4.点击上方微信推送,然后点击页面中的开始绑定5.掏出手机,打开微信,扫描屏幕上的二维码,如果未关注,先关注,然后在绑定即可。6.绑定后,点击上方的发送消息链接,就可

    2022年9月18日
    6
  • EJB学习纪要

    EJB学习纪要为什么会突然要看看EJB这个老古董?前段时间准备再看看Spring的东西,当然就免不了要看一下Spring作者那本导致Spring模型的大作。其中说到Spring是在批判EJB的背景下产生的。所以,就得看看EJB这玩意儿到底搞了什么东西,粗略浏览了下目录,哗!EJB2太复杂了,算了,先从后面简化过了的EJB3看起吧,完了再反过来看看2是个什么样子。这回答真够曲折的,都快忘了当初的想法了,…

    2022年9月28日
    2
  • HBase面试题总结1「建议收藏」

    HBase面试题总结1「建议收藏」hbase的特点是什么??1)hbase是一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper管理。2)hbase适合存储半结构化和非结构化数据,对于结构化数据字段不够确定或者杂乱无章很难按一个概念去抽取数据;3)hbase为空的纪录不会被存储;4)基于的表包含rowkey,时间戳,列族,新写入数据时,时间戳更新,同时可以查询到以前的版本;5)hbase是…

    2022年5月8日
    55
  • RSA加密算法的java实现

    RSA加密算法的java实现最近有一个外部合作项目要求在数据传输过程中使用RSA加密算法对数据进行加密,所以需要编写一个加解密的工具类,因为对方不是java语言,所以是各自实现的这个工具,本文主要讨论实现以及双方调试过程中的一些插曲,希望给大家不要再次踩坑。关于加解密的核心部分,网上有很多博主都有实现过,我也是参考了一些博主的方法自己实现了一个加解密的工具。packagecom.chen.test;importorg.

    2022年5月1日
    40
  • spring boot拦截器和过滤器_java拦截器的作用

    spring boot拦截器和过滤器_java拦截器的作用SpringMVC中有两种很普遍的AOP实现:1.过滤器(Filter)2.拦截器(Interceptor)首先说一下两者之间的区别:过滤器和拦截器非常相似,但是它们有很大的区别a.最简单明了的区别就是过滤器可以修改request,而拦截器不能b.过滤器需要在servlet容器中实现,拦截器可以适用于javaEE,javaSE等各种环境c.拦截器可以调用IOC容器中的各种依赖,而过滤器不能d.过滤器只能在请求的前后使用,而拦截器可以详细到每个方法一、HandlerInterc

    2022年8月23日
    6

发表回复

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

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