CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

关于用window.open()打开指定aspx页面,而被打开的页面却不调用Page_Load()函数问题。

楼主showlie(想长膘的小猪……)2006-03-29 10:55:42 在 .NET技术 / ASP.NET 提问

细节如下:  
  在aaa.aspx页面中保存变量值到Sesssion,然后调用window.open("bbb.aspx")来打开bbb.aspx页面,在bbb.aspx页面中有Page_Load()函数,在函数中读取Session值来初始化bbb页面。但是单步调式后发现bbb.aspx页面被打开后没有调用Page_Load函数,也就是bbb.aspx页面没有任何初始化。  
  另外在bbb.aspx中有个关闭按纽,而在点击此按纽时却会调用Page_Load函数来初始化页面,然后关闭此页面,也就是什么也没用。  
  为什么会出现这种问题?  
  1、在打开bbb.aspx页面时为什么没有调用Page_Load函数。  
  2、在点击关闭按纽时为什么会先调用Page_Load函数。  
  如何解决这些问题,让其实现如下过程。  
  1、当bbb.aspx页面被打开的调用Page_Load函数来初始化页面。  
  2、点击关闭按纽直接关闭页面。 问题点数:100、回复次数:12Top

1 楼Mirricle(Miracle Supply)回复于 2006-03-29 10:57:41 得分 0

不会的啊   只是没跟踪到吧Top

2 楼showlie(想长膘的小猪……)回复于 2006-03-29 10:58:25 得分 0

难道javascript只能打开静态页面吗?小生对javascript不熟,向高手请教Top

3 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-03-29 11:02:29 得分 0

1、在打开bbb.aspx页面时为什么没有调用Page_Load函数。  
        =====   正常来说是会调用的  
  2、在点击关闭按纽时为什么会先调用Page_Load函数。  
        =====   只要发生了回传(postback),就会触发Page_LoadTop

4 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2006-03-29 11:02:29 得分 50

每次OPEN(URL?ID=RANDOM()每次加个变量,或者去掉缓存  
  Reponse.Expires   =-1;Top

5 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-03-29 11:06:37 得分 50

关于第二个问题的解决:  
  如果没有必要,就避免发生回传;  
  例如关闭跟窗口的按钮,如果在后台其button_click事件里用response.write输出关闭窗口的脚本,就会发生回传,先执行Page_Load,然后才是button_Click里面的代码;  
   
  要不回传,那么可以在Page_Load中这样写:  
  this.Button1.Attributes.Add("onclick","window.close();return   false;");  
  或者直接就用html的按钮,而不需要用服务器段控件  
  Top

6 楼jimu8130(火箭的未来在哪里?)回复于 2006-03-29 11:15:48 得分 0

这个你可以看下别人的window。open函数  
  按钮误调用是不是按钮的单击事件和page_load绑定了?你看下他的事件面板  
  重新建立一个页面在看看那Top

7 楼showlie(想长膘的小猪……)回复于 2006-03-30 10:50:37 得分 0

我做了一个测试,在aaa页面中有个button按钮,其中打开bbb页面window.open("bbb.aspx")。在bbb页面中有个label对象。在bbb的Page_Load()函数中有如下代码:  
  if(!Page.IsPostBack)  
      label.text   =   "页面首次被打开";  
  else   label.text   =   "页面非首次被打开";  
  运行代码,bbb页面的label出现"页面首次被打开"。但是以后当我把label的文本修改如下时:  
  if(!Page.IsPostBack)  
      label.text   =   "页面首次被打开11111";  
  else   label.text   =   "页面非首次被打开222222";  
  再次运行程序,label对象的文本还是原来的"页面首次被打开",而不是"页面首次被打开1111"。不管怎么释放控件等操作label文本还是没有任务变化。  
  但是,当bbb页面被刷新后,label文本变为改变后的文本,即"页面首次被打开1111"。接下来的运行,label的文本就一直是"页面首次被打开1111"。除非再次刷新才能做相应的变化。  
   
  高手分析一下为什么会这样?是否是aaa页面每次调用的都是bbb编译后的静态临时页面,除非每次删除bbb临时页面?  
  Top

8 楼coldcool(寒冰)回复于 2006-03-30 11:19:15 得分 0

关掉本页的cache就可以  
  或者禁用你IE的cache功能  
  这个只是简单的缓存问题Top

9 楼javanow(骄子数据库技术网)回复于 2006-03-30 11:19:51 得分 0

我遇过到。可能是   ide   的BUG,他把一些事情丢   了。  
  在   2003年我做的一个网站,一个按钮点击后没任何反应,重新编译一下就行了。Top

10 楼ibm_qq(星城浪子)回复于 2006-03-30 15:27:10 得分 0

试试  
  Response.Write("<Script>window.location='';</Script>");Top

11 楼qhh389(秋风乱舞)回复于 2006-03-30 15:46:54 得分 0

Response.Write("<script>window.opener=null;window.close();</script>");Top

12 楼songwsdy(期待烈火的干柴)回复于 2006-03-30 15:54:20 得分 0

onclick="javascript:parent.parent.window.open('frmEreqList.aspx','main');parent.parent.main.location.replace('frmEreqList.aspx');  
   
  可以试试加上后面的location.replace().  
  这个是个轻量级的解决办法。Top

相关问题

  • Form_Load下调用函数无效
  • 函数调用
  • 函数调用
  • 调用函数
  • 函数调用
  • 函数调用
  • 函数调用?
  • 函数调用函数
  • 如何在aspx中调用global.asax里写的函数?
  • 子函数调用?

关键词

  • 页面
  • 函数
  • 文本
  • 代码
  • 解决
  • javascript
  • 调用
  • 打开
  • bbb
  • 按纽

得分解答快速导航

  • 帖主:showlie
  • rickjelly2004
  • Eddie005

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo