2010-03-24 65 views
0

我已經花了至少2天的時間嘗試任何操作,並使用google搜索這個...但由於某種原因,我無法讓RegisterClientScriptInclude以其他人使用它的方式工作?RegisterClientScriptInclude由於某種原因不起作用

首先,我usting .NET 3.5的Ajax,......而我,包括我的部分頁面的JavaScript刷新,...使用此代碼:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "MyClientCode", script, true); 

它完美,我包含的JavaScript代碼在腳本中變量包含在每個局部刷新中。

腳本 JavaScript的其實是相當廣泛的,雖然,我想將其存儲在一個.js文件,..所以邏輯上我做的.js文件,並嘗試使用RegisterClientScriptInclude它包括...但是我不能爲我的生活得到這個工作。這裏的確切代碼:

ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "mytestscript", "/js/testscript.js"); 

testscript.js文件只包含在FULL頁面刷新...即。當我加載頁面,或做一個完整的回發....我不能讓文件包含在部分刷新......不知道爲什麼......當在firebug中查看ajax POST時,我沒有看到不同的是,我是否包括該文件....

兩個ScriptManager包括正在從「Page_Load」中完全相同的地方運行...所以他們應該執行每個部分刷新(但只有ScriptBlock) 。

反正..任何幫助或想法,..或更多的方式,我可以麻煩拍這個問題,將不勝感激。

感謝, 安德魯

回答

1

這是關鍵:

部分頁面刷新

你必須通過特殊的跳火圈初始加載後的JavaScript添加到頁面,因爲稍後加載JavaScript被認爲是一些安全風險(這對Google索引也是不利的)。

取而代之的是,在初始頁面加載時註冊腳本,直到稍後才執行腳本。如果這些腳本是動態創建的,我建議您將靜態部分和重構分解爲您可以使用從頁面刷新動態返回的信息調用的方法。

+0

謝謝, 最初註冊腳本然後執行它的問題是,我的腳本中有事件監聽器。 因此,如果我註冊一個腳本偵聽點擊事件裏面的一些div內我的updatepanel ....然後我的更新面板刷新...我必須重新加載使用RegisterClientScriptBlock的監聽器它的工作.....我只是不要在我的代碼隱藏中使用javascript代碼.... – Andrew 2010-03-24 17:22:47

+0

.js文件實際上應該只是聲明方法,您稍後可以從您自己的代碼中調用(在這種情況下很可能使用RegisterClientScriptBlock)。你正試圖使用​​包含函數調用的包含文件,這就是爲什麼你有問題,這不是它們應該如何使用。 – fyjham 2010-06-17 04:10:06

相關問題