转义所有需要转义的字符

时间:2012-03-10 00:51:05

标签: c# javascript

我在我的asp.net应用程序中使用模态窗口。在单击按钮时,我执行一些服务器端处理,然后使用cs.RegisterStartupScript关闭窗口并将值返回到父窗口。为此,我使用RegisterStartupScript来运行window.close。

现在我遇到的问题是我想向父母发送一个返回值(一个字符串)。但由于字符串是用户输入的文本,可以包含任何字符,我需要转义所有字符。没有它,我无法将返回值发送给父级。

这是导致失败的脚本(错误消息: 未终止的字符串常量 你想继续在这个页面上运行脚本吗?)

  StringBuilder saveScript = new StringBuilder();
    saveScript.Append("var template = new Object();");
    saveScript.AppendFormat("template.DescriptionPlainText = \"{0}\";",description);
    saveScript.Append("window.returnValue = template;");
    saveScript.Append("window.close();");
    cs.RegisterStartupScript(typeof(myPageType), scriptName, saveScript.ToString(), true);

description是一个字符串。

然而,这成功了

StringBuilder saveScript = new StringBuilder();
saveScript.Append("var template = new Object();");
saveScript.AppendFormat("template.DescriptionPlainText = \"{0}\";","xx");
saveScript.Append("window.returnValue = template;");
saveScript.Append("window.close();");
cs.RegisterStartupScript(typeof(myPageType), scriptName, saveScript.ToString(), true);

2 个答案:

答案 0 :(得分:1)

如果您为了Javascript使用而逃避用户输入description,那么它应该可以正常工作。

见这里:Escape Quote in C# for javascript consumption

答案 1 :(得分:0)

考虑使用AntiXss library来编码Html / JavaScript消费的文本。查看older article on AntiXss并获得更多指导。

 AntiXss.JavaScriptEncode("r'\"a&<>dom!");