在Asp.NEt中Page_Load()事件加载两次的现象
2009-04-03 10:27
459 查看
最近在用VS2005做WebForm项目时发现很多aspx页面加载的时候page_load()时加载两次,在Page页面上输出两个相同的结果,发现原来是AutoEventWireup属性搞得鬼:
<%@ Page language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="true" Inherits="test.Result" %>
解决办法:
<%@ Page language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="test.Result" %>
原因分析:
如果 Page 指令的 AutoEventWireup 属性被设置为 true(或者如果缺少此属性,因为它默认为 true),该页框架将自动调用页事件,即 Page_Init 和 Page_Load 方法。在这种情况下,不需要任何显式的 Handles 子句或委托。
AutoEventWireup 属性的缺点是它要求页事件处理程序具有特定、可预测的名称。这限制了您在为事件处理程序命名时的灵活性。因此,在 Visual Studio 中,AutoEventWireup 属性在默认情况下设置为 false,设计器会生成用于将页事件绑定到方法的显式代码。
如果将 AutoEventWireup 设置为 true,Visual Studio 将生成用于绑定事件的代码,页框架将自动基于事件的名称来调用事件。这可能会导致在该页运行时两次调用相同的事件代码。因此,当在 Visual Studio 中操作时,应尽量使 AutoEventWireup 设置为 false。
关于AutoEventWireup详细资料请参考微软MSDN
<%@ Page language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="true" Inherits="test.Result" %>
解决办法:
<%@ Page language="c#" Codebehind="Result.aspx.cs" AutoEventWireup="false" Inherits="test.Result" %>
原因分析:
如果 Page 指令的 AutoEventWireup 属性被设置为 true(或者如果缺少此属性,因为它默认为 true),该页框架将自动调用页事件,即 Page_Init 和 Page_Load 方法。在这种情况下,不需要任何显式的 Handles 子句或委托。
AutoEventWireup 属性的缺点是它要求页事件处理程序具有特定、可预测的名称。这限制了您在为事件处理程序命名时的灵活性。因此,在 Visual Studio 中,AutoEventWireup 属性在默认情况下设置为 false,设计器会生成用于将页事件绑定到方法的显式代码。
如果将 AutoEventWireup 设置为 true,Visual Studio 将生成用于绑定事件的代码,页框架将自动基于事件的名称来调用事件。这可能会导致在该页运行时两次调用相同的事件代码。因此,当在 Visual Studio 中操作时,应尽量使 AutoEventWireup 设置为 false。
关于AutoEventWireup详细资料请参考微软MSDN
相关文章推荐
- 在Asp.NEt中Page_Load()事件加载两次的现象
- asp.net Page_Load事件加载两次
- asp.net页面的Page_Load执行两次
- Asp.Net Page_Load执行耗时操作,防止页面长时间加载。
- Asp.Net PageLoad事件
- ASP.NET的Page_Load事件
- 关于Asp.net页面Page_Load被执行两次的问题分享
- 如何让ASP.NET页面执行两次Page_Load方法
- ASP.NET Page_Load执行两次
- asp.net页面的Page_Load执行两次
- ASP.NET的Page_Load事件
- 在ASP.NET中值得注意的两个地方(asp.net页面的Page_Load执行两次)
- ASP.NET的Page_Load事件
- 关于Asp.net页面Page_Load被执行两次的问题
- Asp.net 问题:点击button时,总是执行pageload事件,然后再执行button的点击事件
- 关于Asp.net页面Page_Load被执行两次的问题分享
- 关于Asp.net页面Page_Load被执行两次的问题
- asp.net的一个重要发现(Page_Load()的执行次序先控件的事件函数)。
- ASP.NET的Page_Load事件
- ASP.NET Page_load执行两次的解决办法