Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测到循环引用的JSON序列化_C#_Jquery_Json_Asp.net Mvc 5_Entity Framework 6 - Fatal编程技术网

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>&nbsp;<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>&nbsp;<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);
            }
        });
    }