返回列表<>与JsonResult

时间:2012-02-14 16:18:10

标签: asp.net-mvc asp.net-mvc-3 jquery

我正在使用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());

我将得到undefined / 500(内部服务器错误)。

现在的问题是如何从对象中正确返回JSON,以便jQuery ajax可以正确读取它?

由于

2 个答案:

答案 0 :(得分:1)

从未见过用法:

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

之前我不打算发表评论。但是,你可以只使用.ToList()添加到statament的末尾,即:

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

问题的原因是由于您在尝试填充json对象之前尚未枚举对象,因此您遇到各种延迟和对象引用问题。通过添加ToList()可以缓解这些问题,因为对象在到达Json()方法之前是完全枚举的。

它可能会起作用,......或者直接爆炸:)

答案 1 :(得分:0)

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.
}