2009-05-26 115 views
0

在後面的代碼,我註冊瞭如下一個啓動腳本blnShouldAdd評估結果爲true註冊腳本多次

奇怪的是,當我調試代碼並進入ShouldAdd JS函數時,該值始終爲false。我會認爲它是真實的,因爲事件處理程序中的第二次調用覆蓋了第一次調用。

任何想法?

回答

1

我想你應該使用IsStartupScriptBlockRegistered()IsClientScriptBlockRegistered()方法來檢查腳本已經添加,只有懶得RegisterStartupScript當它返回false

1

您必須將複雜的「this」和「this.GetType()」參數傳遞給RegisterStartupScript()函數的原因是爲了確保給定函數僅被註冊一次。因此,您的代碼只運行一次,而不是兩次。

+0

通過「你的代碼運行一次,」我想你指的是JS函數執行一次。只要使用第二次設置的參數執行,我就可以。我沒有看到這種情況 – 2009-05-26 17:21:37

+0

微軟仔細計劃未來的另一個例子來打破你的期望。該腳本將由第一個註冊表修復,您需要確保只註冊一次(或者在第一次註冊時)。 – annakata 2009-05-27 12:57:33

1

當您點擊按鈕作爲asp.net頁面生命週期的一部分時,頁面加載也會運行,並且它會在按鈕的事件處理程序之前運行。 因此,當您到達按鈕的事件處理程序時,您已經在頁面加載中註冊了該腳本,因此忽略使用相同(類型,鍵)對註冊其他腳本的請求。

也許你應該將頁面加載的調用移動到pag生命週期的更晚點,也許PreRender更好。

0

我不知道你是否發現你的問題。但我遇到了類似的問題,我解決了它。

this post