此字符串上的编译错误

时间:2009-09-11 14:42:31

标签: c# compiler-errors

我正在尝试创建以下字符串:

<script runat="server" type="text/C#">
    protected void Page_Load(object sender, EventArgs e)
    {
        Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'></script>");
    }
</script>

但我在VS中遇到编译错误,说“Newline in constant”

3 个答案:

答案 0 :(得分:2)

"<script type='text/javascript' langauage='javascript' src='test.js'></script>"

好吧,你的字符串包含&lt; / script&gt;在&lt; script&gt;内元件。这将关闭外部&lt; script&gt;,因此看起来位于runat-server脚本中的代码只是:

protected void Page_Load(object sender, EventArgs e)
{
    Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'>

正如错误所说,它包含一个“没有终止双引号的字符串。

尝试转义字符,以便其他脚本块不会将它们视为标记:

"\x3Cscript type='text/javascript' src='test.js'>\x3C/script>"

答案 1 :(得分:1)

您的问题是结束脚本标记

http://support.microsoft.com/kb/827420

解决问题:

".....<"+"/SCRIPT>"

或者

".....<\/script>"

使用ClientScriptManager并使用RegisterClientScriptInclude。这样,您只需要在字符串中包含文件名。

ClientScriptManager.RegisterClientScriptInclude

ClientScriptManager scriptManager = new ClientScriptManager(); scriptManager.RegisterClientScriptInclude("filename.js");

答案 2 :(得分:-1)

@"<script language="Javascript" src="/utility/thickbox/thickbox-custom.js"></script>"