String.Format() - 输入字符串的格式不正确

时间:2014-09-10 04:59:32

标签: c# asp.net-mvc razor

String.Format()方法上出现此错误并且不明白为什么,一切对我来说都很好?

string fontface = "";

foreach(...)
{
  fontface = String.Format(@"{3}
    @font-face {
        font-family: '{0}';
        src: url('{0}.eot');
        src: url('{0}.eot') format('embedded-opentype'),
                url('{0}.woff2') format('woff2'),
                url('{0}.woff') format('woff'),
                url('{0}.ttf') format('truetype'),
                url('{0}.svg#{0}') format('svg');
        font-weight:{1};
        font-style:{2};
    }"
  , family, weight, style, fontface);
}

2 个答案:

答案 0 :(得分:8)

您需要将"{", "}"加倍,string.Format()认为每个'{''}'都是占位符的一部分(如'{0}')< / p>

这样的事情:

fontface = String.Format(@"{3}
    @font-face {{
        font-family: '{0}';
        src: url('{0}.eot');
        src: url('{0}.eot') format('embedded-opentype'),
                url('{0}.woff2') format('woff2'),
                url('{0}.woff') format('woff'),
                url('{0}.ttf') format('truetype'),
                url('{0}.svg#{0}') format('svg');
        font-weight:{1};
        font-style:{2};
    }}"
  , family, weight, style, fontface);

答案 1 :(得分:1)

您的两个问题是@font-face {行和}"行。使用Format时,您必须使用其中两个来转义花括号。只需将这些行更改为@font-face {{}}"