zoukankan      html  css  js  c++  java
  • AutoEventWireup="false"导致Page_Load事件未执行 或为 true时执行2次 .

     在调试代码时发现Page_Load事件未执行,找了半天原因,原来是AutoEventWireup设置成false导致。
      转一篇关于AutoEventWireup的帖子.

    AutoEventWireup 设置为 true  执行2次  判断页面中 是否有 图片的 src=“”  为空可导致再次提交

    asp.net(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。

  • 相关阅读:
    2 安装部署flume
    1 flume快速入门——十分钟学会flume
    3、剑指offer-数组——数组中重复的数字
    3.kafka安装配置
    2、剑指offer-字符串——替换空格
    1、剑指offer-数组——二维数组中的查找
    JVM虚拟机垃圾回收(GC)算法及优缺点
    Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
    LeetCode 617. 合并二叉树 Java
    Linux命令大全
  • 原文地址:https://www.cnblogs.com/kaiwanlin/p/3591064.html
Copyright © 2011-2022 走看看