警报弹出窗口中的换行符

时间:2012-09-26 14:12:58

标签: c# javascript asp.net

我正在尝试添加新行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));

6 个答案:

答案 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)

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