Есть ли лучший способ для вывода JavaScript-массив из ASP.net?


Я часто сталкиваются с проблемой изготовления массив JavaScript на ASP.net страница с IEnumerable и я был интересно, если там было проще и чище способ сделать это, чем

<% bool firstItem = true;
   foreach(var item in items){
      if(firstItem)
      {
         firstItem = false;
      }
      else
      {%>
        ,
      <%}%>
     '<%:item%>'
  %>

Все это сделано гораздо более многословен из-за неспособности т. е. к обработке висит запятая в массиве или объекте.



1660
9
задан 20 февраля 2011 в 10:02 Источник Поделиться
Комментарии
3 ответа

С немного помощь от системы.LINQ и это становится довольно легко.

var array = [ <%= 
string.Join(",", items.Select(v => "'" + v.ToString() + "'").ToArray())
%> ];

6
ответ дан 21 февраля 2011 в 01:02 Источник Поделиться

Используйте класс javascriptserializer из системы.Веб.Расширения

<%: новый класс javascriptserializer().Сериализовать(предметы) %>

4
ответ дан 23 февраля 2011 в 10:02 Источник Поделиться

Вы можете использовать анонимный класс и DataContractJsonSerializer и сделать что-то вроде этого:


var toSerialize = items.Select(x => new { JSProp = x.ItemProp }).ToList();

var serializer = new DataContractJsonSerializer(toSerialize.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, myPerson);
string json = Encoding.Default.GetString(ms.ToArray());

Мне нравится этот подход, потому что вы можете создавать сложные типы JavaScript в простой путь.

К сожалению, если он не компилируется, но я не с машины разработчика.

1
ответ дан 23 февраля 2011 в 12:02 Источник Поделиться