为什么转义字符会破坏我的Telerik对ResponseScripts.Add(字符串)的调用?

时间:2010-04-14 20:27:34

标签: javascript asp.net-ajax telerik messagebox

这会显示预期的javascript警告消息框:

RadAjaxManager1.ResponseScripts.Add("alert('blahblahblah');");

虽然这些不是:

RadAjaxManager1.ResponseScripts.Add("alert('blahblah \n blahblahblah');");
RadAjaxManager1.ResponseScripts.Add("alert('blahblah \r blahblahblah');");
RadAjaxManager1.ResponseScripts.Add("alert('blahblah \r\n blahblahblah');");
RadAjaxManager1.ResponseScripts.Add("alert('blahblah \n\t blahblahblah');");
RadAjaxManager1.ResponseScripts.Add(@"alert('blahblah \n blahblahblah');");
string message = "blahblahblah \n blahblahblah";
RadAjaxManager1.ResponseScripts.Add(message);

我找不到任何关于转义字符的文档。我理解Add方法的单个字符串参数可以是任何脚本。没有错误,所以我最好的猜测是格式错误的javascript。

1 个答案:

答案 0 :(得分:2)

你在字符串中添加的\ n实际上是在.NET中作为新行解析的,所以它就这样到达了客户端。例如:

setTimeout(function(){alert('blahblah 
blahblahblah');}, 0);

上述内容不是有效的JavaScript代码,不会执行。为了在客户端脚本中具有实际的\ n,您必须在服务器代码中将其转义为\ n。例如:

RadAjaxManager1.ResponseScripts.Add("alert('blahblah \\n blahblahblah');");

将输出:

setTimeout(function(){alert('blahblah \n blahblahblah');}, 0);