我正在尝试添加新行Javascript警报消息。我试过'\ n'和'Environment.NewLine'。我得到Unterminated字符串常量错误。你能告诉我可能出现什么问题吗?我感谢任何帮助。我也试过\ r \ n。
string msg = "Your session will expire in 10 minutes. \n Please save your work to avoid this.";
if (!this.ClientScript.IsStartupScriptRegistered(ID))
this.ClientScript.RegisterStartupScript(GetType(), ID, String.Format("<script language=JavaScript>setTimeout(\'alert(\"{1}\");\',{0}*1000);</script>", sTime, msg));
答案 0 :(得分:16)
我怀疑您需要将代码更改为;
string msg = "Your session will expire in 10 minutes. \\n Please save your work to avoid this.";
然后转义\n
否则输出的代码实际上会包含换行符而不是\n
您的输出代码如下所示:
setTimeout('alert("Your Session....
Please save your work to ....");', 1000);
而不是:
setTimeout('alert("Your Session....\n Please save your work to ....");', 1000);
答案 1 :(得分:3)
我不确定,但我认为\ n在string.Format方法中被转义,例如\“。也许你应该使用\\ n而不是。
编辑:当我发布时,第一个\\ n已经被转义了。 xD
答案 2 :(得分:2)
乍一看,我会说主要问题是你正在逃避警报周围的'
字符。由于您的字符串由双引号定义,因此您无需转义此字符。
答案 3 :(得分:0)
在字符串的开头加上“@” - 就像这样:
string msg = @"Your session ....";
答案 4 :(得分:0)
代码看起来很好,所以我猜你正在使用一条消息本身有一个'
引号,导致JS语法错误。为了将动态文本插入到Javascript代码块中,您真的应该使用JSON使您的C#字符串“安全”以便在JS中使用。
将JSON视为防止JS等效SQL注入攻击的首选方法。
答案 5 :(得分:0)
在开头添加@
会有所帮助。