Возвращение списка <> с помощью JsonResult - PullRequest
1 голос
/ 14 февраля 2012

Я использую jQuery для использования моего действия.

 $.ajax({   url: '',
            data: 'json',
            type: 'post',
            dataType: options.dataType,
            async: false,
            success: function (obj) { returnValue = obj; }
        });

сейчас ....

если я верну этот ...

var test1 = Json(new { Message = "Any message here.", Status="True" });

Возврат на мой Ajax-вызов ПРОСТО в порядке ..

НО .. если я верну этот (Список пользователей из EF)

var test2 = Json(IoC.Resolve<IUserService>().GetUsers());

Я получу неопределенное / 500 (Внутренняя ошибка сервера).

Теперь вопрос заключается в том, как правильно вернуть JSON из объекта, чтобы jQuery ajax мог правильно его прочитать?

Спасибо

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Lee

Никогда не видел использования:

var test2 = Json(IoC.Resolve<IUserService>().GetUsers());

раньше и комментировать не собираюсь. Тем не менее, вы МОЖЕТЕ сойти с рук, просто добавив .ToList () в конец описания, т. Е .:

var test2 = Json(IoC.Resolve<IUserService>().GetUsers().ToList());

Причина проблемы заключается в том, что вы еще не перечислили объект до того, как пытаетесь заполнить объект json, поэтому у вас возникают всевозможные проблемы с задержкой и ссылками на объекты. Добавляя ToList (), вы уменьшаете эти проблемы, поскольку объект полностью перечисляется, прежде чем он попадет в метод Json ().

это может просто сработать, ... или взорвать:)

0 голосов
/ 14 февраля 2012
public ActionResult MethodName(){
var returnList = IoC.Resolve<IUserService>().GetUsers().ToList();
retun JSON(returnList,JSONRequestBehaviour.AllowGet);
}

Функция jQuery

success: function (obj) {
alert(obj.d.ListProperty);
// you can access all the properties you have in the list.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...