2013-02-06 40 views
14

我正在使用Razor在JavaScript中組裝幾行代碼。我認爲最簡單的方法是首先組裝整個JavaScript塊,然後輸出整個事情。問題是,單引號呈現爲&#39 ;.在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#模式,所以@力剃刀/ HTML模式,從而實際上輸出的結果。 –

+3

如果jsString不受信任,這是腳本注入的可能途徑。要特別小心。 – Bon

相關問題