2010-04-14 49 views
0

这显示预期的JavaScript警告消息框:为什么转义字符会让我的Telerik调用ResponseScripts.Add(string)?

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。

+0

是什么渲染网页? – SLaks 2010-04-14 20:40:57

+0

此警报在点击方法结束时显示 - 是否有任何方法查看该来源?因为页面呈现时没有任何内容。 – 2010-04-15 12:17:44

回答

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); 
+0

不会破坏别的东西吗?我尝试了“blah \\ n \\ tblah \\ nblah”,而“nt”组显示为\ n \ t,而第二个\ n正确。 – 2010-04-15 12:01:52

+0

“blah \\ n \\ tblah \\ nblah”对我来说是正确的(使用Q1 2010版)。我看到 blah blah blah – lingvomir 2010-04-15 14:20:35

相关问题