Page_Load执行两次的解决方法

原创 2007年09月13日 09:38:00

项目中有个列表界面,列表界面中有个一个AutoPostBack属性设置为True的下拉框,这个下拉框用于对表格状态进行筛选,但是在执行的情况很奇怪,每次选择了筛选器以后发现页面还是显示初始状态,即第一次载入页面的内容。通过断点跟踪发现原因是Page_Load执行过两次,Page_Load中的代码结构如下所示:

Page_Load(....)
...{
     
if (!Page.IsPostBack)
     
...{
             
//首次载入页面的执行代码;
             
//code here;
     }

}

通过选择筛选器触发页面回传,第一次执行Page_Load和预想情况一样,由于Page.IsPostBack属性为true,所以不执行页面的初始代码。然后页面执行DropDownList_SelectIndexChange事件响应代码。这个也是正常的。但是奇怪的事情发生了,在执行了DropDownList_SelectIndexChange事件响应代码后,页面再次执行了Page_Load,而且这一次Page.IsPostBack属性为false,即页面是首次载入而不是回传页面。然后页面执行首次载入的初始代码从而造成了无论怎么选择筛选器的值,页面总是显示初始值的原因。

首先想到的是代码中是不是存在跳转到自身的页面的代码,比如:当前页面是a.aspx, 但在代码中存在Response.Redirect("a.aspx")语句,或者在客户端存在window.location.href = 'a.aspx'这种语句,从而造成页面重新载入,但是通过检查代码没有发现。在网络上搜索了一下,发现一篇文章中说可能是图片控件<img/>中的图片地址引(src=...)用了无效地址造成了页面的重新载入。这个给我们提供了一个思路,也就是html或者服务器端控件的属性被赋非法值,那么可能造成也页面的重新早入,通过一点点的去掉html代码,然后进行断点跟踪,发现在table中间的background属性被我赋了一个颜色值,即"#ECECEC"这样的值。而background的合法值应该是一个地址,我的原意是给table设置一个背景颜色,所以这里的属性是bgcolor。就是由于这个原因造成了页面的重新载入,修改后问题解决。

所以在出现页面非正常的多次载入时,可以检查一下自己的HTML源代码,看看时不是有哪个标签的属性被赋了非法值了

ASP.NET中的Page_Load函数理解——附带Page.IsPostBack的简单使用

ASP.NET中web应用程序中的aspx.cs文件中,存在一个protected void Page_Load(object sender, EventArgs e)这样的函数,这个函数顾名思义,便...
  • qq_36251958
  • qq_36251958
  • 2017年08月03日 23:00
  • 492

Page_load事件

Page_Load,即页面载入要执行的事件; Page_Load的执行分为两种情况; 1.Page_Load事件的执行是在第一次加载页面时发生(即为了响应客户的请求); 2.Page_Lo...
  • fjclc2008
  • fjclc2008
  • 2011年11月21日 20:59
  • 15125

Page_load事件 Page.IsPostBack属性

原博地址:http://blog.csdn.net/fjclc2008/article/details/6998046 Page_Load,即页面载入要执行的事件;  Page_Load的...
  • a364416036
  • a364416036
  • 2016年08月01日 10:08
  • 1251

Page_LoadComplete和Page_Load有区别吗

 版块:[.NET技术 ASP.NET] 日期:2006-6-17 分值:20分 回复:4人 提问:问者:cqhq2008(流水) 信誉:95 级别:user1 日期:2006-6-17 10:36:...
  • shankaipingo
  • shankaipingo
  • 2006年11月29日 10:01
  • 1743

Page_Load事件与IsPostBack属性

下面是一个登陆的界面: 我们的需求是:第一次进入登陆界面时,用户名和密码应该为空,所以我们应该在Page_Load中将存放用户名和密码的两个文本框的内容清空。然后当我们单击登陆按钮时,将用户名和密...
  • zhaohuanhuanjiuqi
  • zhaohuanhuanjiuqi
  • 2014年01月23日 23:49
  • 2393

Page_load部分会在一次页面加载的时候执行两次

在写aspx的时候,不注意把AutoEventWireup="false"去掉,你可能会死得很难看,Page_load部分会在一次页面加载的时候执行两次哦!千万注意不要去掉aspx中的AutoEven...
  • dotnet90
  • dotnet90
  • 2007年08月18日 19:03
  • 1709

page_load 与page_init 的区别

默认新建一个页面,就会有一个Page_Load事件的默认代码,而Page_Init却是另一个对页面作用非常重要的事件。下面分别说明: Page_Init:是在页面未加载之前,也就是在页面初始化之前,在...
  • zhangqiang0921
  • zhangqiang0921
  • 2010年10月22日 16:45
  • 2714

page_load为什么会被执行2次

ASP.NET 页框架支持以自动方式将页事件与方法相关联。如果 Page 指令的 AutoEventWireup 属性被设置为 true(或者如果缺少此属性,因为它默认为 true),该页框架将自动调...
  • prospertu
  • prospertu
  • 2015年09月21日 11:17
  • 420

Page_Load(object sender, EventArgs e)的执行顺序

问题:1.创建一个用户控件,包含一个下拉框。用于选择月份。在该用户控件的Page_Load响应函数中写以下代码:    protected void Page_Load(object sender, ...
  • xiaomin98
  • xiaomin98
  • 2008年01月31日 20:02
  • 6469

ASP.NET的Page_Load事件及相关转载

Page_Load,即页面载入要执行的事件;  Page_Load的执行分为两种情况;  1.Page_Load事件的执行是在第一次加载页面时发生(即为了响应客户的请求);  2.Page_...
  • hsicool
  • hsicool
  • 2012年04月19日 17:21
  • 11391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Page_Load执行两次的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)