在我的 asp.net 网站中,在实际添加自定义脚本或注册 js 文件之前,我经常使用以下方法:
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。因此,对于每个回发,我必须重新创建自定义脚本块并将其重新注册到页面,然后将其重新发送给客户端。
只要用户停留在相关页面上,或者只要用户会话处于活动状态,有没有办法注册自定义脚本块并让它在客户端存在?
提前致谢。