2011-09-14 75 views
0

我想創建一個簡單的JavaScript文件來從後面的代碼注入並且希望將變量名稱附加到消息中。爲什麼使用大括號({})的字符串有FormatException?

string javascript = string.Format 
          (
           @"var msg = '{0} '; 
           if(confirm(msg)) 
           {           
            hdnfield.value='Yes'; 
           } else { 
            hdnfield.value='No'; 
           } 
            submit();", variableName); 

但得到一個FormatException。什麼是正確的方法來做到這一點?

一如既往的感謝。

回答

4

if/else語句中的大括號不會被轉義,導致string.Format的調用出現問題,該調用使用大括號來指示佔位符。

string javascript = string.Format 
    (
     @"var msg = '{0} '; 
     if(confirm(msg)) 
     {{           
      hdnfield.value='Yes'; 
     }} else {{ 
      hdnfield.value='No'; 
     }} 
      submit();", variableName); 
0

我認爲您的意思是您將整個文件填入ASP.NET中的String.Format(format, value1, value2, value3...)

如果是這樣,你將會遇到麻煩,因爲它會將每個開啓和關閉花括號解釋爲替換令牌的開始或結束。

你可能會做的更好使用某種佔位符像##MYTOKEN##$$SOMEVALUE$$模板,該文件加載到一個字符串,並使用一些String.Replace(whatToReplace, whattoReplaceItWith)函數來完成替換。

意味着你可以定義你自己的規則,以什麼替換什麼。
String.Format令人難以置信的靈活性和強大的功能,但不會在內容中帶有未轉義的花括號。

相關問題