Fügen Sie der Eigenschaft, die den Zirkelverweis starten würde, das Attribut [ScriptIgnore]
hinzu. Zum Beispiel:
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
[ScriptIgnore]
public Foo Foo { get; set; }
}
Also, vorausgesetzt, Sie eine Instanz von foo
haben, werden die JSON Serializer in den Bar
Bezug zu vertiefen, werden aber nicht in die Foo
Referenz weiter, dort, weil es ignoriert wird.
Sie können dies jedoch nur in eine Richtung tun. Wenn Sie mit einer Instanz von Bar
beginnen, werden Sie die Foo
Referenz überhaupt nicht erhalten, weil es wieder einfach ignoriert wird. Wenn Sie verschiedene Szenarien wie diese behandeln müssen, müssen Sie separate Klassen verwenden (nennen Sie sie Ansichtsmodelle, DTOs, was auch immer), wo Sie es einfach so einrichten, dass der Zirkelverweis überhaupt nicht existiert. Dies ist keine schlechte Idee, einfach zu tun, im Allgemeinen. Mit anderen Worten, Sie können anstelle von [ScriptIgnore]
in erster Linie benutzerdefinierte Klassen verwenden.
Nicht sicher, aber ich denke, dass Sie Ihre Eigenschaften des Modells dekorieren können, um Serialisierung und damit Zirkelverweise zu verhindern: https://msdn.microsoft.com/en-us/library/system.web.script.serialization. scriptignoreattribute.aspx – Stefan