您的位置:首页 > 编程语言 > ASP

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: