有人可以向我解释为什么当我使用$.getJSON()
调用它时,此代码会返回500内部服务器错误:
public JsonResult SomeItemList()
{
SomeDBDataContext _dbContext;
IEnumerable<SomeModel> _items;
using (_dbContext = new SomeDBDataContext())
{
_items= from list in _dbContext.GetItems()
select new SomeModel
{
Name= list.Name,
ID = list.ID
};
return Json(_items, JsonRequestBehavior.AllowGet);
}
}
虽然这个没有任何错误:
public JsonResult SomeItemList()
{
SomeDBDataContext _dbContextv = new SomeDBDataContext();
IEnumerable<SomeModel> _items;
_items= from list in _dbContext.GetItems()
select new SomeModel
{
Name= list.Name,
ID = list.ID
};
return Json(_items, JsonRequestBehavior.AllowGet);
}
唯一的区别是我将第一个放在Using语句中,在完成查询后将被处理。
答案 0 :(得分:1)
我认为这可能是因为序列化在您退出使用后因此关闭与数据库的连接而开始。如果需要通过在返回json之前对数据库执行.ToList()来发送查询,它应该可以工作。
public JsonResult SomeItemList()
{
SomeDBDataContext _dbContext;
IEnumerable<SomeModel> _items;
using (_dbContext = new SomeDBDataContext())
{
_items = (from list in _dbContext.GetItems()
select new SomeModel
{
Name= list.Name,
ID = list.ID
}).ToList();
return Json(_items, JsonRequestBehavior.AllowGet);
}
}