Понятия не имею, но передача таких моделей доменов-гигантов очень плохая практика. Этот домен настолько загрязнен, что не имеет к этому никакого отношения. В представлении вы работаете с представлениями моделей. Модели представлений содержат только то, что нужно представлению. В этом случае вашему представлению нужны идентификатор и имя. Поэтому передайте модель представления только с этими простыми свойствами этому представлению:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetHistoricalReports()
{
var reports = DashboardSessionRepository.Instance.HistoricalReports;
var reportsViewModel = reports.Select(x => new
{
ID = x.ID,
Name = x.Name
}).ToArray();
return Json(reportsViewModel, JsonRequestBehavior.AllowGet);
}
Теперь вы не только сэкономите трафик, но и получите чистый JSON:
[ { ID: 1, Name: 'Foo' }, { ID: 2, Name: 'Bar' }, ... ]
, через который вы сможете зацикливаться, используя $.each
.
UPDATE:
Теперь, когда вы показали свои данные JSON, кажется, что есть свойство Content
, которое представляет коллекцию. Так что вам нужно пройти через это:
$.each(data.Content, ...);
и если вы последуете моему совету относительно моделей представлений, ваше действие контроллера будет выглядеть следующим образом:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetHistoricalReports()
{
var report = DashboardSessionRepository.Instance.HistoricalReports;
var reportsViewModel = report.Content.Select(x => new
{
ID = x.ID,
Name = x.Name
}).ToArray();
return Json(reportsViewModel, JsonRequestBehavior.AllowGet);
}
и теперь цикл непосредственно через возвращенную коллекцию:
$.each(data, ...);