6

我正在尝试添加新行 Javascript 警报消息。我尝试了“\n”和“Environment.NewLine”。我收到未终止的字符串常量错误。你能告诉我可能是什么问题吗?我很感激任何帮助。我也试过\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));
4

6 回答 6

17

我怀疑您需要将代码更改为;

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);
于 2012-09-26T14:19:27.953 回答
3

我不确定,但我认为 \n 在 string.Format 方法中被转义,如 \"。也许你应该使用 \\n 代替。

已编辑:当我发布时,\\n 的第一个 \ 已被转义。xD

于 2012-09-26T14:17:16.527 回答
2

乍一看,我会说主要问题是您正在逃避'警报周围的角色。由于您的字符串由双引号定义,因此您无需转义此字符。

于 2012-09-26T14:17:24.803 回答
0

在字符串的开头添加“@” - 像这样:

string msg = @"Your session ....";
于 2012-09-26T14:14:30.573 回答
0

代码看起来不错,所以我猜测您使用的消息本身包含'引号,导致 JS 语法错误。为了将动态文本插入到 Javascript 代码块中,您确实应该使用 JSON 来使您的 C# 字符串“安全”以在 JS 中使用。

考虑 JSON 是防止 JS 等效的 SQL 注入攻击的首选方法。

于 2012-09-26T14:15:12.803 回答
0

@在开头添加 a应该会有所帮助。

于 2012-09-26T14:19:23.523 回答