2015-08-19 32 views
1

我從string.Format(...)操作收到以下錯誤:的String.format例外輸入字符串的不正確的格式

System.FormatException - 輸入字符串的不正確的格式。

我有一個資源字典,其中包含一個基本的html頁面的條目。

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title of the document</title> 

    <style> 
     * { 
      margin: 0; 
      padding: 0; 
     } 

     body { 
      font-family: 'Arial, Verdana', Fallback, sans-serif; 
      font-size: 14px; 
     } 

     table { 
      background-color: #eeeeee; 
      width: 100%; 
      padding: 10px; 
      margin: 5px; 
     } 

     h1 { 
      font-size: 16px; 
      font-weight: bold; 
      margin: 20px 0 10px 0; 
     } 
    </style> 
</head> 

<body> 
    text<br /> 

    <table> 
     <tr> 
      <td>Text 1</td> 
      <td>{0}</td> 
     </tr> 
     <tr> 
      <td>Text 2</td> 
      <td>{1}</td> 
     </tr> 
     <tr> 
      <td>Text 3</td> 
      <td>{2}</td> 
     </tr> 
     <tr> 
      <td>Text 4</td> 
      <td>{3}</td> 
     </tr> 
     <tr> 
      <td>Text 5</td> 
      <td>{4}</td> 
     </tr> 
     <tr> 
      <td>Text 6</td> 
      <td>{5}</td> 
     </tr> 
     <tr> 
      <td>Text 7</td> 
      <td>{6}</td> 
     </tr> 
    </table> 
    <br /> 

    <h1>Header1</h1> 

    <table> 
     <tr> 
      <td><a href="http://www.google.com">http://www.google.com</a></td> 
     </tr> 
     <tr> 
      <td>Text 8: {7}</td> 
     </tr> 
    </table> 
    <br /> 
</body> 

string.Format(...)操作是這樣的:

var emailHtml = string.Format(
        WebUtility.HtmlEncode(EmailResource.EmailTemplate), 
        "text1", 
        "text2", 
        "text3", 
        "text4", 
        "text5", 
        "text6", 
        "text7", 
        "text8"); 

有誰知道我做了什麼樣的錯誤? 難道不可能像這樣在資源字典中填寫佔位符?

+0

我不認爲你應該是HtmlEncoding整個模板..你應該只編碼單個文本1,文本2等,如果他們需要編碼值(在這種情況下,他們都這樣做) –

+5

如果我是一個博彩man,那些未轉義的'{'和'}'(在你的CSS定義中)是原因。格式輸入中的大括號必須轉義('{'=>'{{','}'} =>'}}')。 –

回答

9

你有很多花括號不屬於格式說明,例如:

{ 
     margin: 0; 
     padding: 0; 
    } 

要麼你需要複製它們:

{{ 
     margin: 0; 
     padding: 0; 
    }} 

或使用不同格式的方法(如模板引擎)。