2017-05-18 6 views
0

javascriptでかみそりの構文を使用して、コードの2か所にオブジェクトの配列を作成しています。しかし、1つはエラーになり、もう1つはエラーになりません。ここで配列内のオブジェクトにオブジェクトを入れ子にしたときのエラー

がエラーを取得していない一つだ:

var tableItems = [ 
    @foreach(var i in items) 
    { 
     <text> 
     { 
      "ItemID":@i.ItemID, 
      "ItemName":@i.ItemName, 
     }, 
     </text> 
    } 
]; 

そして以下は、レンダリング時に発生javascript配列である:

var tableItems = [ 
    { 
     "ItemID":123000, 
     "ItemName":"An Item Name", 
    },    
    { 
     "ItemID":456000, 
     "ItemName":"Another Item Name" 
    }, /* comma here doesn't throw error */ 
]; 

これは、他の一つであり、この次のコードではありませんエラーを表示しますがレンダーは何ですか:

var tableItemsTwo = [ 
    @foreach (var i in items) 
    { 
     <text> 
     { 
      "ItemID": @i.ItemID, 
      "ItemName": @i.ItemName, 
      "Subitems": 
      @foreach (var s in i.Subitems) 
      { 
       <text> 
       { 
        "SubitemID":@s.SubitemID, 
        "SubitemName":@s.SubitemName 
       }, 
       </text> 
      } 
     }, 
     </text> 
    } 
]; 

エラーを投げて表示されるレンダリングされた配列:

var tableItemsTwo = [ 
    { 
     "ItemID": 110000, 
     "ItemName": "Item One", 
     "Subitems": 
      { 
       "SubitemID":100, 
       "SubitemName":"Subitem One" 
      },   
      { /* Error on this line: "Expected identifier, string or number" */ 
       "SubitemID":200, 
       "SubitemName":"Subitem Two" 
      }, 
      { 
       "SubitemID":300, 
       "SubitemName":"Subitem Three" 
      },   
    }, /* Error on this line: "Syntax error" */ 
]; 

tableItemsTwoを修正するにはどうすればよいですか?私はMVC 5を使用しています。

答えて

1

Subitemsは、オブジェクトの配列であるため、その周囲に[]が必要です。

試してみてください。

var tableItemsTwo = [ 
    @foreach (var i in items) 
    { 
     <text> 
     { 
      "ItemID": @i.ItemID, 
      "ItemName": @i.ItemName, 
      "Subitems": [ 
      @foreach (var s in i.Subitems) 
      { 
       <text> 
       { 
        "SubitemID":@s.SubitemID, 
        "SubitemName":@s.SubitemName 
       }, 
       </text> 
      } 
     ]}, 
     </text> 
    } 
]; 
+0

これは理にかなって、ありがとうございました!!! – Darren

関連する問題