为什么转义字符会让我的Telerik调用ResponseScripts.Add(string)?
这显示预期的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。
您在字符串中添加的\ 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);
不会破坏别的东西吗?我尝试了“blah \\ n \\ tblah \\ nblah”,而“nt”组显示为\ n \ t,而第二个\ n正确。 – 2010-04-15 12:01:52
“blah \\ n \\ tblah \\ nblah”对我来说是正确的(使用Q1 2010版)。我看到 blah blah blah – lingvomir 2010-04-15 14:20:35
是什么渲染网页? – SLaks 2010-04-14 20:40:57
此警报在点击方法结束时显示 - 是否有任何方法查看该来源?因为页面呈现时没有任何内容。 – 2010-04-15 12:17:44