web-dev-qa-db-fra.com

Mélangez rasoir et code javascript

Je suis assez confus avec la façon de mélanger le 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 que tout le reste était du 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?

150
Kyle Brandt

Utilisez <text>:

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
      <text>
            data.Push([ @r.UnixTime * 1000, @r.Value ]);
      </text>
   }
</script>
298
Max Toro

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

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

76
SLaks

vous pouvez aussi simplement utiliser 

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
       @:data.Push([ @r.UnixTime * 1000, @r.Value ]);
   }
</script>

remarque @:

45

Ne mélangez jamais plus de langues. 

<script type="text/javascript">
    var data = @Json.Encode(Model); // !!!! export data !!!!

    for(var prop in data){
      console.log( prop + " "+ data[prop]);
    }
10
Mertuarez

vous pouvez utiliser la balise <text> pour le code cshtml avec javascript