2013-02-22 76 views
1

在后面的代码,我有以下代码:为什么IsClientScriptBlockRegistered在调试模式下总是返回false?

if (!Page.ClientScript.IsClientScriptBlockRegistered("Script1")) 
    Page.RegisterClientScriptBlock("Script1", "<script type=\"text/javascript\">alert('test');</script>"); 

此代码似乎工作正常,但是当我尝试调试它Page.ClientScript.IsClientScriptBlockRegistered("Script1")总是返回false。我甚至打开了快速查看窗口,并能够找到_clientScriptBlock下的脚本。

任何想法,为什么这是?

+0

你使用ASP.NET AJAX? – 2013-02-22 12:56:45

+0

是的,我愿意。这有什么区别吗? – malkassem 2013-02-22 12:57:38

+0

尝试使用'ScriptManager.RegisterStartupScript'来代替。 http://msdn.microsoft.com/en-us/magazine/cc163354.aspx – 2013-02-22 12:59:13

回答

1

使用GetType()方法的参数,以确保您隔离正确的脚本块,像这样:

if (!Page.ClientScript.IsClientScriptBlockRegistered(GetType(), "Script1")) 
{ 
    Page.RegisterClientScriptBlock(GetType(), "Script1", 
     "<script type=\"text/javascript\">alert('test');</script>"); 
} 
+0

这实际上工作...谢谢 – malkassem 2014-01-30 17:54:43

+0

有谁知道'IsClientScriptBlockRegistered'是否执行检查当前页周期或当前会话吗? 含义:我应该在回发后重新注册脚本吗? – Brabbeldas 2014-04-03 11:27:25

相关问题