【发布时间】:2014-10-13 16:52:47
【问题描述】:
我的 MVC 控制器中有一个简单的方法:
[HttpPost]
public JsonResult GetAreasForCompany(int companyId)
{
var areas = context.Areas.Where(x => x.Company.CompanyId == companyId).ToList();
return Json(areas);
}
这是一个区域对象:
public class Area
{
public int AreaId { get; set; }
[Required]
public string Title { get; set; }
public bool Archive { get; set; }
public virtual Company Company { get; set; }
}
这就是我从视图中调用方法的方式:
$.ajax({
url: '@Url.Action("GetAreasForCompany")',
type: 'POST',
async: false,
data: "{'companyId': " + companyId + "}",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
error: function () {
alert("Server access failure!");
},
success: function (result) {
response = result;
}
});
我检查了控制器中的方法,并创建了一个 Area 对象列表。您知道为什么从视图调用该方法时会出现 500 内部服务器错误吗?当我返回任何其他内容(如 Dictionary 对象)时,一切正常,只是当我打算将区域列表转换为 Json 时,我得到了一个错误。
【问题讨论】:
-
Company是否恰好包含Area的集合? -
是的,公司有收藏区
-
好的,很可能是循环引用问题。您实际上需要在结果中返回
Area的哪些属性? -
标题和区域 ID。然后我应该只使用这两个属性创建匿名对象吗?
-
完全正确 -
.Select(a => new ....(它的好处是减少了负载)
标签: c# jquery ajax asp.net-mvc json