asp.net中未终止的字符串常量错误

时间:2012-08-13 06:58:05

标签: c# javascript asp.net

enter image description here

调用函数

时出现此错误
 static public void DisplayAJAXMessage(Control page, string msg)
{
    string myScript = String.Format("alert('{0}');", msg);

    ScriptManager.RegisterStartupScript(page, page.GetType(), "MyScript", myScript, true);
}

调用此功能:

    string sampledata = "Name                  :zzzzzzzzzzzzzzzz<br>Phone         :00000000000000<br>Country               :India";
        string sample = sampledata.Replace("<br>", "\n");


    MsgBox.DisplayAJAXMessage(this, sample);

我需要在下一行显示姓名,电话和国家/地区。

4 个答案:

答案 0 :(得分:8)

未终止的字符串常量意味着您忘记关闭字符串。您不能拥有跨多行运行的警报。当脚本输出到浏览器时,它实际上包括新行..而不是像javascript所期望的那样“\ n”。这意味着,您的提醒呼叫将超过多行......就像这样:

alert('Name                  :zzzzzzzzzzzzzzzz
       Phone         :00000000000000
       Country               :India');

..这将无效,并将产生您所看到的错误。尝试使用双反斜杠来逃避反斜杠:

string sample = sampledata.Replace("<br>", "\\n");

答案 1 :(得分:2)

"\n"是C#的换行符,即你的js包含:

something('...blah foo
bar ...');

实际想要的是js中的换行符:

something('...blah foo\nbar ...');

你可以用:

string sample = sampledata.Replace("<br>", "\\n");

或:

string sample = sampledata.Replace("<br>", @"\n");

答案 2 :(得分:0)

您需要转义/编码JavaScript消耗的字符串:

Escape Quote in C# for javascript consumption

答案 3 :(得分:0)

你的Unterminated不在C#中,是在Javascript生成的代码中。