Как получить доступ к элементам списка массивов, переданных из контроллера в javascript? - PullRequest
0 голосов
/ 21 августа 2009

Я использую Asp.net MVC, и в контроллере у меня есть функция, которая генерирует список массивов, т.е. List, и после преобразования его в представление я возвращаю его на страницу просмотра. На странице просмотра я конвертирую его Список по следующему коду:

          <% List<string[]> items = (List<string[]>)ViewData["Items"];  %>

Теперь я хочу получить доступ к элементам один за другим каждого массива, принадлежащего списку, используя оператор for / foreach в javascript. Я пытаюсь использовать следующий код:

            var j;
            for(j=0;j<'<%=items.Count%>';j++)
            {
                   alert('<%=items['+j+'].GetValue(0).ToString()%>');
                   ..........                                         
            }  

Но я получаю сообщение об ошибке: «Слишком много символов в символьном литерале». Если я использую следующий код, то он работает нормально:

                    alert('<%=items[0].GetValue(0).ToString()%>'); 

Но я хочу использовать его динамически. Есть ли способ выполнить эту операцию? Пожалуйста, помогите мне. Спасибо заранее. Arka

Ответы [ 2 ]

2 голосов
/ 21 августа 2009

Вам необходимо сериализовать объект списка на стороне сервера в массив javascript:

Пример функции C # для сериализации объекта:

protected string SerializeToJson(List<string[]> list) {
        if ( list != null && list.Count > 0 ) {
            var stream = new MemoryStream();
            var jsSerializer = new DataContractJsonSerializer(list.GetType());
            jsSerializer.WriteObject(stream, list);

            return Encoding.UTF8.GetString(stream.ToArray());
        }
        return string.Empty;
    }

Пример использования (JavaScript с встроенным вызовом функции сериализации JSON в C #):

// the following call will return JSON array [["a","b"]]
var arrayFromServer = <%= SerializeToJson(new List<string[]> { new [] {"a", "b"}};) %>;

Это то, что вы просили?

0 голосов
/ 21 августа 2009

В этом сценарии вы можете обрабатывать элементы списка только на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...