asp.net mvc - как вы можете просмотреть данные модели в javascript - PullRequest
2 голосов
/ 05 января 2010

Я пытаюсь добавить данные в список в 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);
                        }

Ответы [ 3 ]

11 голосов
/ 14 января 2013

Я знаю, что это старый вопрос, но ответы устарели, поскольку теперь это возможно.

Это можно сделать в синтаксисе бритвы, используя @: в начале строк для запуска в javascript (выход из c #).

Мой Model.xValues - это List<String>, переданный с контроллера. и yValues равно List<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>
3 голосов
/ 05 января 2010

Нельзя смешивать код, который выполняется на сервере (транслитерация блока <% %>), с тем, что выполняется на клиенте (цикл for) таким образом. Выполните итерацию в C #, а не в javascript и создайте объект javascript в строке, которую вы можете просто назначить.

<%  var aray = "[";
    foreach (var insert in Model.Inserts) {
        aray += "'" + insert + "',";
    }
    aray = aray.TrimEnd(",") + "]";
 %>
    var mlb = <% aray %>;
2 голосов
/ 05 января 2010

Вам нужно будет перебрать свой объект Model в блоке кода .NET и присвоить эти значения переменным 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
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...