ASPX中的“常量新行”错误<script runat =“server”> block

时间:2017-02-07 22:11:07

标签: c# asp.net webforms

我有以下代码,并且已经工作了几个小时。我一直收到“Newline in constant”错误,无法弄清楚如何处理以下代码来解决问题。问题发生在我添加ajax.googleapis.com脚本的脚本字符串的行上。

&#xA;&#xA;
 &lt;%@ Master Language =“C#”AutoEventWireup =“True”Inherits =“XXX.XXX.XXXX”%&gt;&#xA;&lt; ; script runat =“server”&gt;&#xA; private void Page_Load(object sender,System.EventArgs e)&#xA; {&#XA; var script = String.Empty; &#XA; if(!(Request.Browser.Type.ToUpper()。Contains(“IE”)|| Request.Browser.Type.ToUpper()。Contains(“INTERNETEXPLORER”)))&#xA; {&#XA; script =“&lt; script src ='// ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>";;#xA; }&#XA; ScriptLiteral.Text = script; &#XA; }&#XA;&LT; /脚本&GT; &#xA;  
&#xA;&#xA;

以下是我收到的错误消息:

&#xA;&#xA;
&# XA; 'h'应用程序中的

服务器错误。

&#xA; &#XA;

编译错误

&#xA; &#XA;

描述:在编译为此请求提供服务所需的资源期间发生错误。请查看以下具体错误详细信息并适当修改源代码。

&#xA; &#XA;

编译器错误消息: CS1010:常量中的换行符

&#xA; &#XA;

来源错误:

&#xA;&#xA;
 第18行:if(!(Request.Browser.Type.ToUpper()。包含( “IE”)|| Request.Browser.Type.ToUpper()。包含(“INTERNETEXPLORER”)))&#xA;第19行:{&#xA;第20行:script =“&lt; script src ='// ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>";
Line 21:}&#xA;第22行:ScriptLiteral.Text =脚本; &#XA;  
&#XA; &#XA;

源文件: c:\ inetpub \ selfcarehome.com \ default.Master 行: 20

&#xA;
&#xA ;

1 个答案:

答案 0 :(得分:2)

问题是第20行的字符串文字中的</script>标记。当ASP.NET解析您的标记时,它会看到<script runat="server">标记,然后查找相应的</script>标记。但是,解析器不理解C#语法,也不处理嵌套的<script>标记。因此,ASP.NET认为您的服务器端脚本块在第20行的中间结束,因此它将以下代码发送到C#编译器:

private void Page_Load(object sender, System.EventArgs e)
{
    var script = String.Empty; 
    if(!(Request.Browser.Type.ToUpper().Contains("IE") || Request.Browser.Type.ToUpper().Contains("INTERNETEXPLORER")))
    {
        script = "<script src='//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'>

现在应该很明显为什么C#编译器认为字符串中有换行符。

要避免此问题,请将</script>标记拆分为多个部分:

script = "<script src='//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'><" + "/script>";