2012-02-14 119 views
1

我正在使用jQuery来使用我的操作。用JsonResult返回一个List <>

$.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可以正确读取它?

感谢

+0

我有同样的问题,是因为该名单是长传给罚球 – jcvegan 2012-02-14 16:21:13

+0

可能是这样的一个副本:http://stackoverflow.com/questions/3113952/asp-net-mvc-jsonresult-return-500 – 2012-02-14 16:22:19

+1

什么是IoC.Resolve ()。GetUsers()实际返回?既然你正在使用var我不能告诉你正试图转换为JSON返回什么样的数据类型。 – 2012-02-14 16:23:24

回答

1

利,

从未见过这种用法:

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

之前我不会发表评论。但是,您可能逃脱只是增加一个.ToList()到s​​tatament结束,即:

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

的原因问题是由于这样的事实,你还没有列举的对象了在试图填充json对象之前,因此您会遇到各种延迟和对象引用问题。通过添加ToList(),可以减轻这些问题,因为该对象在命中Json()方法之前已完全枚举。

它可能只是工作,...或者你吹跑了:)

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. 
} 
相关问题