2009-01-14 120 views
3

我已经被引入ASP.NET项目,并且我有一个包含通过AJAX获取的控件的页面。Page_Load在Firefox中调用,但不是IE

控件的Page_Load函数会执行一些必要的逻辑以从Query字符串中获取正确的值。

问题是在IE中没有调用Page_Load函数。

如果我放入一个断点,我可以在FF中加载页面并观察它停止,但在IE中:没有处理。

我很漂亮(读:完全)新的ASP.NET,但我是一个非常有经验的PHP开发人员。 所以我想这可能是一些与IE的AJAX回调获取控制的方式放克。

有没有人有任何想法?

干杯

回答

5

看起来这是一个缓存的问题,通过做这样解决:

protected override void OnLoad(EventArgs e) 
{ 
    Response.Cache.SetNoStore(); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetExpires(DateTime.Now); 
    Response.Cache.SetLastModified(DateTime.Now); 
    Response.Cache.SetAllowResponseInBrowserHistory(false); 
    base.OnLoad(e); 
} 
0

我会尝试使用IE Developer Toolbar帮助调试IE浏览器的问题,但我认为你是在正确的轨道上。

您还可以在IE的高级选项中启用脚本调试并调试脚本。

+0

呀,但开发工具栏不让你调试JS吗? 噢,IE上的萤火虫.... – tobyc 2009-01-14 20:25:35

+0

不,但它可以帮助。在IE中,您可以启用脚本调试并将脚本调试器附加到您的IE中。 – 2009-01-14 20:35:38

0

Page_Load内部有什么? EventWireup在ASPX页面上设置为false,或者它在代码中。

+1

Hrm,EventWireup没有被指定,从我读的意思是默认为true。 Page_Load之前有什么可以使其无效(仅适用于IE)? 事实上,它只是IE导致我相信这是一个客户端问题......? – tobyc 2009-01-14 20:24:49

1

也许尝试调试javascript,看看它是否试图获得在IE控制?如果你可以的话。更好的是,看着小提琴手。 http://www.Fiddler2.com

0

IE8会让你调试javascript。 AFAIK,你所解释的不应该发生在典型的设置中,因为服务器处理来自所有浏览器的请求是相同的。你确定你坐在正确的断点上,并在正确的页面上?

也许你可以发布一个page_load的小样本,你在哪里设置断点,以及回调它的JS?

仅供参考,这里是ASP.NET page lifecycle

1

如果它的缓存,你应该使用OutputCache指令将其关闭:

<%@ OutputCache Duration="0" VaryByParam="None" %>