使用RegisterClientScriptBlock的不完整的JS脚本标记

时间:2009-09-29 10:41:48

标签: c# javascript registerclientscriptblock registerstartupscript

我目前正在尝试从.NET页面注册JS函数调用,该页面只调用关闭窗口的.aspx页面上的一个小函数。

RegisterClientScriptBlock代码如下:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>closeBox();</script>");

这种事情在不同页面上的应用程序的其他地方起作用。但是,在这种情况下,我得到一个运行时JS错误:错误:预期'/',当我调试时,确定插入的javascript是:

<script type='text/javascript'>closeBox();<

如您所见,它尚未添加/ script&gt;由于某些原因!我试图自己遗漏标签并使用:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "closeBox();", true);

但结果相同。

我也试过RegisterStartupScript无济于事。

之前有其他人遇到过这个吗?关于是什么导致它以及如何解决它的任何想法?

3 个答案:

答案 0 :(得分:0)

我不确定它是否完全一样(我的记忆不像以前那样),但我想我过去遇到了类似的问题。解决方案是在脚本的各个部分之间放置一些行终止符,即

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>\n\rcloseBox();\n\r</script>");

答案 1 :(得分:0)

这个RegisterClientScriptBlock在哪里?是在<script runat="server">元素中吗?

如果是这样,aspx解析器会将C#字符串文字中的</script>视为封闭script元素的结尾,并将停在那里。如果你想把序列</script>放在<script>里面(这也适用于普通的JavaScript),你必须将其转义以分解序列。一个好方法是:

"\x3C/script"

答案 2 :(得分:0)

错误原来是完全不相关的。