代码之家  ›  专栏  ›  技术社区  ›  burnt1ce

此字符串上的编译错误

  •  0
  • burnt1ce  · 技术社区  · 16 年前

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

    <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 回复  |  直到 16 年前
        1
  •  1
  •   skyfoot    16 年前

    您的问题是结束脚本标记

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

    解决它:

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

    或者也许

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

    请改用ClientScriptManager,并使用RegisterClientScriptInclude。这样,您只需要将文件名放在字符串中。

    ClientScriptManager.RegisterClientScriptInclude

    ClientScriptManager scriptManager = new ClientScriptManager(); scriptManager.RegisterClientScriptInclude("filename.js");
    
        2
  •  2
  •   bobince    16 年前
    "<script type='text/javascript' langauage='javascript' src='test.js'></script>"
    

    是的,在一个<script>元素中有包含</script>的字符串。这将关闭外部脚本,因此显示在runat服务器脚本中的代码只是:

    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>"
    
        3
  •  -1
  •   sylvanaar    16 年前
    @"<script language="Javascript" src="/utility/thickbox/thickbox-custom.js"></script>"