簡體   English   中英

asp.net mvc - 如何在javascript中循環遍歷模型數據

[英]asp.net mvc - how can you loop through model data in javascript

我想在javascript中將數據添加到列表框中,但是字符串構建語法讓我感到難過:

var yourobject = '<%=Model.Inserts['+ i + ']%>';

導致錯誤:“字符文字中的字符過多”

所有代碼:

var mlb = cm.createListBox('mylistbox', {
                        title: 'My list box',
                        onselect: function(v) {
                                tinyMCE.activeEditor.windowManager.alert('Value selected:' + v);
                            }
                        });


                        for (var i = 0; i < '<%=Model.Inserts.Count() %>'; i++) {
                            var yourobject = '<%=Model.Inserts['+ i + ']%>';
                            mlb.add(yourobject, i);
                        }

我知道這是一個老問題,但答案已經過時,因為現在可以了。

這可以在razor語法中使用@:在行的開頭用javascript運行(從c#中轉義)。

我的Model.xValues是從控制器傳遞的List<String> yValuesList<int>

這是一個如何在javascript函數中循環模型數據的快速示例。

<script type="text/javascript">
   function drawChart() {

        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', '@Model.LabelName');
        data.addColumn('number', '@Model.ValueName');

       @for(int i = 0; i < Model.xValues.Count; i ++)
       {
           @: data.addRow(['@Model.xValues.ElementAt(i)', @Model.yValues.ElementAt(i)]);
       }

       ... etc

</script>

您不能以這種方式將在服務器上運行的代碼( <% %>塊的音譯)與客戶端上的運行(for循環)混合在一起。 在C#而不是在javascript中進行迭代,並在字符串中創建一個javascript對象,您可以簡單地分配。

<%  var aray = "[";
    foreach (var insert in Model.Inserts) {
        aray += "'" + insert + "',";
    }
    aray = aray.TrimEnd(",") + "]";
 %>
    var mlb = <% aray %>;

您需要在.NET代碼塊中循環遍歷Model對象,並將這些值分配給該循環中的JavaScript變量:

var count = 0, yourobject; // This is JavaScript

<% for (var i = 0; i < Model.Inserts.Count(); i++) { %> // This is .NET 
       yourobject = '<%= Model.Inserts[i] %>'; // This is JS AND .NET
       mlb.add(yourobject, count++); // This is JavaScript
<% } %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM