2011-09-14 16 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...)に入れているということを意味します。

もしそうなら、あなたはJavascriptでそれをすることに問題があるでしょう。それは、すべての開閉中括弧を置換するトークンの開始または終了として解釈するためです。

あなたはおそらく、##MYTOKEN##または$$SOMEVALUE$$のようなテンプレート内のプレースホルダのいくつかの並べ替えを使用することをお勧めしません文字列にそのファイルをロードし、置換を行うには、いくつかのString.Replace(whatToReplace, whattoReplaceItWith)の機能を使用すると思います。

あなたは何に置き換えるべきかに関する独自のルールを定義することができます。
String.Formatは非常に柔軟で強力ですが、コンテンツにエスケープされていない中括弧はありません。

関連する問題