webentwicklung-frage-antwort-db.com.de

Mischen Sie Rasiermesser und Javascript-Code

Ich bin ziemlich verwirrt, wie man Rasiermesser und Js mischt. Dies ist die aktuelle Funktion, mit der ich mich beschäftige:

<script type="text/javascript">

        var data = [];

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

Wenn ich C # -Code mit <c#></c#> deklarieren könnte und alles andere JS-Code wäre - das wäre, was ich suche

<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#>

Was ist die beste Methode, um dies zu erreichen?

150
Kyle Brandt

Verwenden Sie <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

Innerhalb eines Codeblocks (z. B. @foreach) müssen Sie die Markierung (oder in diesem Fall Javascript) mit @: oder dem <text>-Tag markieren.

Innerhalb der Markup-Kontexte müssen Sie Code mit Codeblöcken umgeben (@{ ... } oder @if, ...).

76
SLaks

sie können auch einfach verwenden 

<script type="text/javascript">

   var data = [];

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

hinweis @:

45

Mischen Sie niemals mehr Sprachen. 

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

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

sie können den <text>-Tag für beide cshtml-Codes mit Javascript verwenden