在我的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