我有以下代码,并且已经工作了几个小时。我一直收到“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; &#XA;编译器错误消息: CS1010:常量中的换行符
&#xA; &#XA;来源错误:
&#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; 代码>
源文件: c:\ inetpub \ selfcarehome.com \ default.Master 行: 20
&#xA;
答案 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>";