Mix Razor et le code Javascript

Je suis assez confus avec la façon de mélanger rasoir et js. C'est la fonction actuelle avec laquelle je suis coincé:

<script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { data.push([ @r.UnixTime * 1000, @r.Value ]); } 

Si je pouvais déclarer le code c # avec <c#></c#> et tout le reste était le code JS – ce serait ce que je suis après:

 <script type="text/javascript"> var data = []; <c#>@foreach (var r in Model.rows) {</c#> data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]); <c#>}</c#> 

Quelle est la meilleure méthode pour y parvenir?

Utilisez <text> :

 <script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { <text> data.push([ @r.UnixTime * 1000, @r.Value ]); </text> } </script> 

À l'intérieur d'un bloc de code (par exemple, @foreach ), vous devez marquer le balisage (ou, dans ce cas, Javascript) avec @: ou la <text> .

Dans les contextes de balisage, vous devez entourer le code avec des blocs de code ( @{ ... } ou @if , …)

Vous pouvez également utiliser

 <script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { @:data.push([ @r.UnixTime * 1000, @r.Value ]); } </script> 

Note @:

Ne jamais mélanger plus de langues.

 <script type="text/javascript"> var data = @Json.Encode(Model); // !!!! export data !!!! for(var prop in data){ console.log( prop + " "+ data[prop]); } 

Enveloppez votre code Razor dans @ {} lorsque vous êtes dans le script JS et soyez conscient d'utiliser simplement @ Parfois, cela ne fonctionne pas:

 function hideSurveyReminder() { @Session["_isSurveyPassed"] = true; } 

Cela produira

 function hideSurveyReminder() { False = true; } 

Dans le navigateur = (