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源代码,看看时不是有哪个标签的属性被赋了非法值了

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C# Page_load()事件 执行两遍 出现的几种情况以及解决办法

情况一,IsPostBack 解决方案:if(!this.Page.IsPostBack)  情况二:会导致Page_load执行两遍.... 检查代码里有没有可以让src为...

Page_Load先于页面端调用的后台方法

前台代码: 执行顺序测试 后台代码: protected void Page_Load(object sender, EventArgs e) { ...

page_load为什么会被执行2次

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

spring定时任务执行两次的原因与解决方法

最近遇到一个比较棘手的问题,由于场景需要,每天晚上11点执行一个定时任务,我用的是spring的定时器,具体的定时任务相关配置和代码如下,没啥毛病。。。 直接上代码: 1、项目下的配置文件serv...

配置了 Spring AOP 但会调用两次的问题解决方法

1 发现问题项目配置了 Spring AOP,但会被调用两次:开始 before() [2017-07-26 11:10:18.071] [INFO]:[com.deniro.jail.service...

mui日期选择器弹出两次的解决方法

今天在用mui做日期选择的时候,发现日期弹出窗口弹出两次,代码并无问题,后来测试发现js被调用了两次,DtPicker代码如下:/*日期选择*/ (function($) { ...

jquery easyui datagrid请求两次或多次的问题解决方法

jquery easyui datagrid请求两次或多次的问题解决方法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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