50685


asp.net MVCにて、.cshtml側に書いたjavascriptに、  
下記コードのように@Model.dayDataList配列をjavascript内で作成した配列にループを回して1つずつ入れ替えたいのですが、@Model.dayDataList[i]のiが  
「現在のコンテキストに'i'という名前は存在しません」となり使えません。

[code]

    <script type="text/javascript">
      var date = new Date();
      var year = date.getFullYear();
      var month = date.getMonth() + 1;
      var lastMonth = new Date(year, month-1, 0);
    
      var dayCnt= lastMonth.getDate();
      var dataList = new Array();
      for(var i = 1; i< dayCnt;i++){
        dataList[i-1] = @Model.dayDataList[i-1]   //←ここでエラー
      }
    
      // ---略---
    
    </script>
    
[/code]

@Model.dayDataList[0]のように直接配列に値を入力すればデータはとれているのですが、javascript内で宣言した変数は@Modelでは使用できないのでしょうか。


CC BY-SA 4.0
2018-11-27T04:36:20.703
50663
2018-11-30T06:21:07.070
19580
question
javascript c# .net mvc
View側の＠Modelの配列をループで回してjavascript配列に入れ替える方法


エラー個所で使用されている i はjavascriptの変数であり、Razor上の変数としては使えません。  
ちょっと実際に動作させてないのでミスがあるかもしれませんが、目的の動作のためには以下のようになるかと思います

[code]

    @for(int i = 1; i < Model.dayDataList.Length; i++) {
        @:dataList[@(i−1)] = @(Model.dayDataList[i-1])
    }
    
[/code]

for文自体をRazor側で実行しています。forもiもC#側というような意味合いです。  
生成されるhtmlにはfor文ではなく、ループした回数分の代入文ができあがります。


CC BY-SA 4.0
2018-11-27T16:00:52.717
50685
2018-11-27T16:00:52.717
728
50663
answer