Передача списка записей с помощью jQuery - PullRequest
0 голосов
/ 19 января 2011

У меня есть ситуация, когда я хочу передать список записей через Ajax / JQuery.

public JsonResult GetListOfRecords()
{
   return Json(_repository.GetAllRecords());
}

когда я вызываю этот метод действия с помощью jQuery, он не работает:

$.getJSON('GetAllRecords', function(data){ // data is IQueryable<T> or IEnumerabel<T>
$.each(data, function(d) {
    $('#somewhere').html(d.Title); //d is SomeModelType and Title is property of that type
});
});

Примечание. Метод GetAllRecords возвращает IQueryable .... Я также проверял IEnumerable

Однако, если передать ArrayList типа, это, похоже, работа (но не удовлетворяет мою потребность):

public JsonResult GetAllRecords()
{
  var list = new ArrayList();
  foreach(var item in _repository.GetAllRecords())
  {
    list.Add(item.Title);
  }
  return Json(list);
}

это просто отображает заголовок ...

Мой вопрос таков: «Я хочу передать IQueryable или IEnumerable через ajax».

1 Ответ

1 голос
/ 19 января 2011

Кажется, это не так.Следующее прекрасно работает с IEnumerable<T> и анонимным типом:

public ActionResult GetListOfRecords()
{
    return Json(
        Enumerable.Range(1, 3).Select(i => new
        {
            Id = i,
            Title = "title " + i
        }),
        JsonRequestBehavior.AllowGet
    );
}

и для вызова:

$.getJSON('<%= Url.Action("GetListOfRecords") %>', { }, function(records) {
    $.each(records, function(index, record) {
        alert(record.Id + ' ' + record.Title);
    });
});

Также обратите внимание на небольшую тонкость в $.each() функция.

В вашем случае у вас есть:

$.each(data, function(d) { ...

В моем случае у меня есть:

$.each(data, function(index, d) { ...

Первый параметр обратного вызова - это индекс, а не значение.

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