一个很怪很老的问题,Page_Load执行两次?

时间:2022-01-16 18:53:44
首先我采用了母版页
以下情况均是在If(!PostBack)代码里下
1。新建一个空的内容页,并设置为起始页,然后运行,Page_Load执行一次,刷新则会执行两次。
2。而有的页面Page_Load却是连续执行两次
3。检查也并未发现网上说的 <img src="">的情况
4。检查未发现加载的时候前台或者后台重定向到自己本身。
5。至于网上说的设置 AutoEventWireup="false"则Page_Load压根不执行。

大家帮忙分析下可能是什么情况造成的啊?实在是找不到原因啦。

59 个解决方案

#1


把 If(!PostBack) 去掉呢 ? 刷新几次?

#2


是去掉不去掉If(!IsPostBack)情况和原来都是一样的

#3


这个。。。只能单步调试后才好找原因。。。

#4


引用楼主 frankbooth 的回复:
首先我采用了母版页
以下情况均是在If(!PostBack)代码里下
1。新建一个空的内容页,并设置为起始页,然后运行,Page_Load执行一次,刷新则会执行两次。
2。而有的页面Page_Load却是连续执行两次
3。检查也并未发现网上说的 <img src="">的情况
4。检查未发现加载的时候前台或者后台重定向到自己本身。
5。至于网上说的设置 AutoEventWireup=……

建议打个断点,调试一下,看看情况,以便解决问题。

#5


那你 的 If(!PostBack) 还有用吗 ?
 
直接把 弹出 提示框 放里面,别的程序先注释,,只能 试试、、

不然就调试吧。。

#6


当然做过单步啦,还是没找到原因啊?难不成是出了网上说的那些情况,而我没找到?晕死。

#7


没碰到过这事,帮顶了!

#8


if(!IsPostBack)

可能有些自定義控件(含有AutoPostback)初始化時,執行的吧

#9


不用母版 试试

#10


是否有其它触发重新加载的函数

#11


没遇到过。。。。加个断点一步步走一下看看。。。。

#12


刷新的时候提交了两次,一次是自动提交的,一次是手动提交或关联代码提交的,总之是发送了两次请求

#13


引用 8 楼 csui2008 的回复:
if(!IsPostBack)

可能有些自定義控件(含有AutoPostback)初始化時,執行的吧

应该是不只页面执行了PageLoad   以前的开发中遇到过这个问题   没解决

#14


单步调试下…

#15


看看是不是页面中有JS刷新页面的。

#16


应该有哪里调用了吧!

#17


if(!ispostback)
刷新2次??

#18


单步调试

#19


    前台有代码触发这个事件? 

#20


有遇见过,也没找出问题来。。。。

#21


看来很多人都遇到过这个问题,而且大都没解决。晕~
单步也看不出什么毛病啊,前台后台都没有刷新页面的代码啊。

#22


............

#23


遇到类似的问题,飘过~~

#24


if(!Page.IsPostBack) 


测试输出数据看看
用户控件

#25


是不是你注册了两遍的啊

#26


首先,得了解asp.net两次刷新的作用。它为什么会这样做,这样是为了什么??
AutoEventWireup属性被设置为true,该页框架将自动调用页事件Page_Init 和Page_Load方法

页面上html服务器控件,以及web服务器控件。这些控件更改事件将会被捕获,但不会立刻发送到服务器,它们会被保存在缓存中,当页面再次刷新,也就是您说的二次刷新,再次在服务器上处理该页,同时将引发并处理所有的挂起事件。

#27


遇到过,但是不会

#28


遇到过

#29


你动态添加了一些控件,并且修改设置了他的一些属性,如xx.id="haha"+i.ToString()所致。

#30


是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。

#31


。。。

#32


没遇到过,帮顶。。。。。。。

#33


没遇到过,帮顶!

#34


引用 30 楼 blogtjf 的回复:
是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。


可能是这个原因

#35


路过帮顶

#36


LZ把你的测试代码贴出来吧   这么多人猜来猜去,估计也没你需要的

#37


浏览器是用的什么
ff和ie8的刷新意义不同
你可以用httpwatch看一下页面提交了几次

#38


非常有可能是你的页面中有 img 标签,但是它的 src属性值"为空",或者为"."或者为"/"
而这些属性值的结果就是导致该标签会再请求一次当前页面。所以导致Page_Load重复执行。

#39


引用 30 楼 blogtjf 的回复:
是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。

是在本地运行的,没有放到IIS上去。也没有动态添加控件啊。

#40


别犹豫了 调试吧

#41


遇到过

#42


 查看你的InitializeComponent()是否把按钮事件或Page_Load事件定义两次了 

#43


也有可能是自动生成的

#44


有没有输出语句,有的输出语句就会再返回到页面中

#45


进来看看

#46


protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            
        }
    }

#47


难道是位置问题,放在子页面还是母版页面了
你换一个试试

如果不行,就换成别的,如果是加载什么,就在加载前先进行清理吧,这样就不会
暂时只能这样避免一下了

祝你好运

#48


没遇到过。。。。加个断点单步调试看看。。。。

#49


我测试了一下应该是母版页的问题,新建一个空的内容页,设为起始页也是开始执行一次,刷新执行两次,不用母版页则没问题,我再找找到底是什么问题……

#50


1. 点击页面上的按钮,会先pageload,但是不会执行if (!this.IsPostBack){}内的内容。
然后,再执行按钮事件。如果你在按钮事件里面有重定向或者重新绑定,就有可能了。
但是你说没有,排除掉。
2. 就是你的这个页面继承了某个类A,这个类A又继承了Page类。
在类A里面,重写了Page_Init方法,在 Page_Init内又使用了一次Page_load,这样就造成了执行两次。不知道是这个原因不。

#1


把 If(!PostBack) 去掉呢 ? 刷新几次?

#2


是去掉不去掉If(!IsPostBack)情况和原来都是一样的

#3


这个。。。只能单步调试后才好找原因。。。

#4


引用楼主 frankbooth 的回复:
首先我采用了母版页
以下情况均是在If(!PostBack)代码里下
1。新建一个空的内容页,并设置为起始页,然后运行,Page_Load执行一次,刷新则会执行两次。
2。而有的页面Page_Load却是连续执行两次
3。检查也并未发现网上说的 <img src="">的情况
4。检查未发现加载的时候前台或者后台重定向到自己本身。
5。至于网上说的设置 AutoEventWireup=……

建议打个断点,调试一下,看看情况,以便解决问题。

#5


那你 的 If(!PostBack) 还有用吗 ?
 
直接把 弹出 提示框 放里面,别的程序先注释,,只能 试试、、

不然就调试吧。。

#6


当然做过单步啦,还是没找到原因啊?难不成是出了网上说的那些情况,而我没找到?晕死。

#7


没碰到过这事,帮顶了!

#8


if(!IsPostBack)

可能有些自定義控件(含有AutoPostback)初始化時,執行的吧

#9


不用母版 试试

#10


是否有其它触发重新加载的函数

#11


没遇到过。。。。加个断点一步步走一下看看。。。。

#12


刷新的时候提交了两次,一次是自动提交的,一次是手动提交或关联代码提交的,总之是发送了两次请求

#13


引用 8 楼 csui2008 的回复:
if(!IsPostBack)

可能有些自定義控件(含有AutoPostback)初始化時,執行的吧

应该是不只页面执行了PageLoad   以前的开发中遇到过这个问题   没解决

#14


单步调试下…

#15


看看是不是页面中有JS刷新页面的。

#16


应该有哪里调用了吧!

#17


if(!ispostback)
刷新2次??

#18


单步调试

#19


    前台有代码触发这个事件? 

#20


有遇见过,也没找出问题来。。。。

#21


看来很多人都遇到过这个问题,而且大都没解决。晕~
单步也看不出什么毛病啊,前台后台都没有刷新页面的代码啊。

#22


............

#23


遇到类似的问题,飘过~~

#24


if(!Page.IsPostBack) 


测试输出数据看看
用户控件

#25


是不是你注册了两遍的啊

#26


首先,得了解asp.net两次刷新的作用。它为什么会这样做,这样是为了什么??
AutoEventWireup属性被设置为true,该页框架将自动调用页事件Page_Init 和Page_Load方法

页面上html服务器控件,以及web服务器控件。这些控件更改事件将会被捕获,但不会立刻发送到服务器,它们会被保存在缓存中,当页面再次刷新,也就是您说的二次刷新,再次在服务器上处理该页,同时将引发并处理所有的挂起事件。

#27


遇到过,但是不会

#28


遇到过

#29


你动态添加了一些控件,并且修改设置了他的一些属性,如xx.id="haha"+i.ToString()所致。

#30


是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。

#31


。。。

#32


没遇到过,帮顶。。。。。。。

#33


没遇到过,帮顶!

#34


引用 30 楼 blogtjf 的回复:
是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。


可能是这个原因

#35


路过帮顶

#36


LZ把你的测试代码贴出来吧   这么多人猜来猜去,估计也没你需要的

#37


浏览器是用的什么
ff和ie8的刷新意义不同
你可以用httpwatch看一下页面提交了几次

#38


非常有可能是你的页面中有 img 标签,但是它的 src属性值"为空",或者为"."或者为"/"
而这些属性值的结果就是导致该标签会再请求一次当前页面。所以导致Page_Load重复执行。

#39


引用 30 楼 blogtjf 的回复:
是新建内容页的命名问题,你是否命名为default.aspx或是index.aspx等IIS里面已有的名,这样就会执行两次,我遇到过,我把名子改了就不执行两次了。

是在本地运行的,没有放到IIS上去。也没有动态添加控件啊。

#40


别犹豫了 调试吧

#41


遇到过

#42


 查看你的InitializeComponent()是否把按钮事件或Page_Load事件定义两次了 

#43


也有可能是自动生成的

#44


有没有输出语句,有的输出语句就会再返回到页面中

#45


进来看看

#46


protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            
        }
    }

#47


难道是位置问题,放在子页面还是母版页面了
你换一个试试

如果不行,就换成别的,如果是加载什么,就在加载前先进行清理吧,这样就不会
暂时只能这样避免一下了

祝你好运

#48


没遇到过。。。。加个断点单步调试看看。。。。

#49


我测试了一下应该是母版页的问题,新建一个空的内容页,设为起始页也是开始执行一次,刷新执行两次,不用母版页则没问题,我再找找到底是什么问题……

#50


1. 点击页面上的按钮,会先pageload,但是不会执行if (!this.IsPostBack){}内的内容。
然后,再执行按钮事件。如果你在按钮事件里面有重定向或者重新绑定,就有可能了。
但是你说没有,排除掉。
2. 就是你的这个页面继承了某个类A,这个类A又继承了Page类。
在类A里面,重写了Page_Init方法,在 Page_Init内又使用了一次Page_load,这样就造成了执行两次。不知道是这个原因不。