C# 检测到循环引用的JSON序列化
我创建了两个类“候选”和“经验”。候选人可能有很多经验C# 检测到循环引用的JSON序列化,c#,jquery,json,asp.net-mvc-5,entity-framework-6,C#,Jquery,Json,Asp.net Mvc 5,Entity Framework 6,我创建了两个类“候选”和“经验”。候选人可能有很多经验 public class Consultant { public int ConsultantID { get; set; } public string ConsultantNom { get; set; } public string ConsultantPrenom { get; set; } public string ConsultantTitre { get; set; } public
public class Consultant
{
public int ConsultantID { get; set; }
public string ConsultantNom { get; set; }
public string ConsultantPrenom { get; set; }
public string ConsultantTitre { get; set; }
public Disponibilite ConsultantDisponibilite { get; set; }
public virtual ICollection<Experience> Experiences { get; set; }
}
public class Experience
{
public int ExperienceID { get; set; }
public virtual Consultant Consultant { get; set; }
public int ConsultantID { get; set; }
public string ExperienceNomSociete { get; set; }
public string ExperiencePoste { get; set; }
public DateTime ExperienceDebut { get; set; }
public DateTime ExperienceFin { get; set; }
public string ExperienceCompetences { get; set; }
问题是当我放置断点时,我收到了结果,但在我的页面中有一个问题“序列化类型的对象时检测到循环引用”
以下是我使用JQuery解析数据的方式:
function PopulateConsultantList() {
$.ajax({
type: "GET",
url: "/Consultants/ConsultantsList",
success: function (data) {
console.log(data);
var json = $.parseJSON(JSON.stringify(data));
console.log(json);
var corpsTR = '';
$.each(json, function (i, item) {
corpsTR += '<tr><td>' + item.ConsultantPrenom + " " + item.ConsultantNom + '</td>'
+ '<td>' + item.ConsultantTitre + '</td>'
+ '<td>Immédiate</td>'
+ '<td><a href="/Consultants/Details/' + item.ConsultantID + '" class="btn btn-default btn-icon"><i class="fa fa-file-text-o"></i></a> <a href="/Consultants/Delete/' + item.ConsultantID + '" class="btn btn-danger btn-icon"><i class="fa fa-trash-o"></i></a></td></tr>';
});
$("tbody").append(corpsTR);
}
});
}
函数PopulateConsultantList(){
$.ajax({
键入:“获取”,
url:“/Consultants/ConsultantsList”,
成功:功能(数据){
控制台日志(数据);
var json=$.parseJSON(json.stringify(数据));
log(json);
var-corpsTR='';
$.each(json,函数(i,项){
corpsTR+=''+item.ConsultantPrenom+''+item.ConsultantNom+''
+''+项目.咨询顾问+''
+“即时”
+ ' ';
});
$(“tbody”)。追加(公司);
}
});
}
PS:当经验为空时,不会发出问题。
感谢您从Experience中删除Consultant属性,或向其添加一个JsonIgnore属性。您只需要的4个属性,因此创建一个仅包含这4个属性的匿名对象集合(当它甚至未被使用时,向客户端发送所有额外数据是没有意义的)
function PopulateConsultantList() {
$.ajax({
type: "GET",
url: "/Consultants/ConsultantsList",
success: function (data) {
console.log(data);
var json = $.parseJSON(JSON.stringify(data));
console.log(json);
var corpsTR = '';
$.each(json, function (i, item) {
corpsTR += '<tr><td>' + item.ConsultantPrenom + " " + item.ConsultantNom + '</td>'
+ '<td>' + item.ConsultantTitre + '</td>'
+ '<td>Immédiate</td>'
+ '<td><a href="/Consultants/Details/' + item.ConsultantID + '" class="btn btn-default btn-icon"><i class="fa fa-file-text-o"></i></a> <a href="/Consultants/Delete/' + item.ConsultantID + '" class="btn btn-danger btn-icon"><i class="fa fa-trash-o"></i></a></td></tr>';
});
$("tbody").append(corpsTR);
}
});
}