2009-01-14 119 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" %>