string.Format在HTML + javascript上抛出System.Format异常

时间:2009-04-30 20:37:03

标签: c# .net asp.net string

我在包含一些HTML + javascript的只读字符串上运行string.Format,但我得到了System.FormatException

这是我的格式字符串:

<script type="text/javascript">
    function {0}_showHideFieldWindow() {
        if ({0}.IsCustomizationWindowVisible()) {
            {0}.HideCustomizationWindow();
        } else {
            {0}.ShowCustomizationWindow();
        }
    }
</script>

我正在做的就是传递对象名称。像这样:

string.Format(javascript, "grid");

2 个答案:

答案 0 :(得分:12)

由于你在字符串中有大括号,你需要将它们加倍( {{ }} )以避免它们格式化者认为他们是代币。

您的字符串初始化应如下所示:

String javascript = @"<script type=""text/javascript"">
            function {0}_showHideFieldWindow() {{
            if ({0}.IsCustomizationWindowVisible()) {{
                {0}.HideCustomizationWindow();
            }} else {{
                {0}.ShowCustomizationWindow();
            }}
        }}
    </script>";

答案 1 :(得分:6)

String.Format需要转义额外的括号。你可能最好做这样的事情,如果你不需要String.Format的所有功能,这可能比转义每个括号更具可读性:

mystring.Replace("{0}","grid");