在使用String.Format()的过程中,一直没有遇到这种类型的问题,直到在写一个小sample的过程中,需要动态生成一段javascript代码并且通过ScriptManager.RegisterCliemtScriptBlock方法将其注册到前台,这里使用String.Format来区分动态和静态部分,并且生成最终的脚本代码。
在编程中发现带有“{”和“}”符号的脚本代码在String.format()过程中会报错,提示输入字符串不正确。反复检查了javascript,并没有什么可疑的地方。后来通过查询一些资料,由于String.Format()通过检测“{”,“}”符号来判断,需要参数字符串插入的位置,如果你继续在源字符串中使用这个字符时,可能造成混淆(你可以将其当做是关键字),就像你需要在字符串中加入双引号时,同样需要使用转义字符。 所以在实际开发中,你需要吧”{“和”}“字符以”{{“和”}}“代替。
很小的一个问题,可能是个人编程经验不足,贻笑大方,这里写下来作为自己的提醒。
例子:
- public static string Script = @"function Yes() {{
- var back = document.getElementById('wholePage');
- back.parentNode.removeChild(back);
- var message = document.getElementById('messageBox');
- message.parentNode.removeChild(message);{0}}}”;
另外一个, 如果你的字符串中含有引号,需要额外再加上一个引号才可以正常显示,即“”代替”, 例如:
string script="function A() {var text=""""}";
通过RegisterCliemtScriptBlock方法可以注册为function A() {var text="";}