2013-02-06 12 views
14

Łączę kilka linii w JavaScript za pomocą Razor. Sądziłem, że najłatwiej będzie najpierw złożyć cały blok JavaScript, a potem wypisać całą rzecz. Problem polega na tym, że pojedyncze cytaty są renderowane jako & # 39 ;.Wyjście pojedyncze cudzysłowy w Razor generowane JavaScript Ciąg

Czy jest możliwe, aby zmienić ostatni wiersz, aby to napisać poprawnie:

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; 
    } 

Powyższy generuje to:

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

Odpowiedz

27

Można wyłączyć kodowanie HTML przez wyprowadzanie ten sposób :

@Html.Raw(jsString) 
+1

To działa. Właściwie próbowałem go wcześniej, ale nie sądziłem, że muszę poprzedzić @, więc nic nie napisałem. Dzięki. – Dave

+1

@Dave: Tak, bez niego jesteś w trybie C#, więc tryb force/html @ w rzeczywistości wyprowadza wyniki. –

+3

Jest to możliwa metoda wstrzykiwania skryptu, jeśli jsString nie jest zaufany. Bądź bardzo ostrożny. – Bon

Powiązane problemy