在我的asp.net網站,我經常使用下面的方法之前實際添加任何腳本的定製片或註冊一個js文件只有一次:註冊ClientScriptBlock在多次回發
IsClientScriptBlockRegistered(Type, String)
IsClientScriptIncludeRegistered(Type, String)
當一個頁面需要一個定製片的腳本,在PageLoad期間的某處我呼叫IsClientScriptBlockRegisterd()
,然後是RegisterClientScriptBlock()
。
if (!Page.ClientScript.IsClientScriptBlockRegistered(typeof(Page), "myKey"))
{
// Start creating ScriptBlock //
// .. //
// Actually Register the script //
ToolkitScriptManager.RegisterClientScriptBlock(this, typeof(Page), "myKey",
sbScript.ToString(), false);
}
上述代碼在回發期間總是被調用一次。
當用戶在相關頁面上,同時停留在該頁面上時,他可以導致多次回發(實際回發,而不是回調)。 在回發期間,GetRegisteredClientScriptBlocks
方法始終返回一個空集合。所以IsClientScriptBlockRegistered
總是返回false。因此,對於每次回發,我必須重新創建自定義腳本塊並將其重新註冊到頁面,然後重新發送給客戶端。
只要用戶停留在相關頁面上,或只要用戶會話處於活動狀態,是否有註冊自定義腳本塊的方法,並讓它存在於客戶端?
在此先感謝。
感謝您的回答。我認爲你不瞭解這個問題。該頁面確實需要註冊客戶端腳本。我只是不想一遍又一遍地做。添加IsPostback檢查將導致根本沒有客戶端腳本。 – Brabbeldas