web-dev-qa-db-ja.com

RazorとJavaScriptコードを混在させる

かみそりとjsを混ぜる方法にかなり混乱しています。これは私が行き詰まっている現在の機能です:

<script type="text/javascript">

        var data = [];

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

<c#></c#>を使用してc#コードを宣言でき、他のすべてがJSコードであった場合、これが私が求めていることです。

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

これを達成するための最良の方法は何ですか?

155
Kyle Brandt

<text>を使用します。

<script type="text/javascript">

   var data = [];

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

コードブロック(@foreachなど)内で、マークアップ(またはこの場合はJavascript)をマークする必要があります @:または<text>タグを使用

マークアップコンテキスト内では、コードをコードブロックで囲む必要があります(@{ ... }または@if、...)

79
SLaks

また、単に使用することができます

<script type="text/javascript">

   var data = [];

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

@:

48

これ以上言語を混在させないでください。

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

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

あなたは両方のcshtmlコードとjavascriptで<text>タグを使用することができます