2017-10-20 69 views
0
<script type="text/javascript"> 
     window.onload = function() { 
      for (var i=0;i<@Model.listsinfo.Count;i++) 
      { 
       $('#work').append($('<div class="col-md-3" id="temp"><label for="text1">'+ '@Model.listsinfo[i].Label' +'</label></div><div class="col-md-3"> <input type="text" placeholder="Alerts" class="form-control" id="text1"> </div>')); 
      } 
     } 
    </script> 

在上面的代碼中,我從我的控制器傳遞一個列表並試圖迭代它。但是@ Model.listsinfo [i] .Label不起作用,錯誤表示'我'在當前上下文中不存在。我能夠通過給出索引值@ Model.listsinfo [0] .Label來訪問列表值,但迭代不起作用。任何幫助表示讚賞。無法在javascript中迭代列表

+0

刪除''單引號@ Model.listsinfo [I] .Label'' – Niladri

+2

你'@ Model.listsinfo'位於服務器和你的循環 - 在客戶端 – Flying

+0

@飛行是可以訪問他們在剃刀 – Niladri

回答

2

您可以使用Json.EncodeHtml.Raw並將其分配給一個JavaScript數組,然後從那裏重複的內容:

<script type="text/javascript"> 
    window.onload = function() { 
      var array = @Html.Raw(Json.Encode(@Model.listsinfo)); 

      for (var i = 0; i < array.length; i++) 
      { 
       $('#work').append($('<div class="col-md-3" id="temp"><label for="text1">'+ array[i].Label +'</label></div><div class="col-md-3"> <input type="text" placeholder="Alerts" class="form-control" id="text1"> </div>')); 
      } 
    } 
</script> 

注意Model.listinfo處理在服務器端和發生在客戶端迭代,所以你需要先將viewmodel數組轉換爲JS數組,然後才能將其分配給append方法。

類似的問題:

MVC: Iterating a Viewbag array in javascript

jQuery: How to traverse/Iterate over a list of object

+0

偉大的偉大的感謝.. !!它現在工作.. !! :) – CRA

+0

你可以考慮接受任何答案,最好的解決你的問題,而不是說「謝謝」,沒有義務這樣做。 –