2013-02-06 1 views
14

Razorを使用してJavaScriptで数行をアセンブルしています。 JavaScriptブロック全体を最初にアセンブルして全体を出力するのが最も簡単な方法だと思っていました。問題は、一重引用符が'と表示されていることです。Razorで一重引用符を出力しました。JavaScript文字列

が、これは正しく書くために取得するには、最後の行を変更することが可能です:

var friendArray = new Array(); 
    @{ 
     int i = 0; 
     string jsString=""; 
     foreach(var friend in friends) 
     { 
      jsString = jsString + "friendArray["; 
      jsString = jsString + i.ToString(); 
      jsString = jsString + "]='"; 
      jsString = jsString + friend.displayname; 
      jsString = jsString + "';"; 
      i++; 
     } 
     @jsString; 
    } 

上記の本を生成します。

friendArray[0]=& #39;Hollister& #39;;friendArray[1]=& #39;Festus& #39;; 

答えて

27

あなたがこの方法を出力することで、HTMLのエンコーディングをオフにすることができ:

@Html.Raw(jsString) 
+1

これは機能します。実際に私は早くそれを試しましたが、私は何も書いていないので、@に接頭辞を付ける必要はないと思いました。ありがとう。 – Dave

+1

@Dave:そうですね、C#モードになっていないので、結果として実際に結果を出力するようになります。 –

+3

これは、jsStringが信頼されていない場合、スクリプト注入の可能性があります。十分気をつける。 – Bon

関連する問題