3 Stimmen

ScriptIgnore Attribut funktioniert nicht in Teilklasse

Ich habe ein Problem bei der Verwendung des ScriptIgnore-Tags in meiner Teilsicht, um zu verhindern, dass eine Eigenschaft serialisiert wird.

var docs = @Html.Raw(Json.Encode(Model))

Das Komische ist, wenn ich das Attribut direkt der Teilklassendatei in der .tt-Datei hinzufüge, funktioniert es wie erwartet. Aber weil diese Datei überschrieben wird, wenn ich eine Codegenerierung durchführe, habe ich versucht, MetadataType zu verwenden

[MetadataType(typeof(DocumentMeta))] // Dies wird hinzugefügt, damit wir Metadaten zu unserer Teilklassen hinzufügen können..
public partial class Document
{

}

[MetadataType(typeof(DocumentCategoryMeta))] // Dies wird hinzugefügt, damit wir Metadaten zu unserer Teilklassen hinzufügen können..
public partial class DocumentCategory
{

}

public class DocumentMeta
{
    [ScriptIgnore]   //Wir fügen hier das ScriptIgnore hinzu, weil wir einige dieser Entitäten im Client-Code serialisieren
    public virtual ICollection DocumentCategories { get; set; }
}

public class DocumentCategoryMeta
{
    [ScriptIgnore]        //Wir fügen hier das ScriptIgnore hinzu, weil wir einige dieser Entitäten im Client-Code serialisieren
    public virtual DocumentCategory Parent { get; set; }
}

Ich erhalte immer noch den gleichen Fehler: Es wurde eine zirkuläre Referenz erkannt beim Serialisieren eines Objekts des Typs 'DocumentCategory'.

Weil DocumentCategory hierarchische Daten enthält.

Jede Hilfe wäre sehr geschätzt!

Tribe84

1voto

Mohsen Esmailpour Punkte 11324

Versuchen Sie [ScriptIgnore(ApplyToOverrides = true)]

0voto

user1698821 Punkte 41

Für alle virtuellen Eigenschaften sollten Sie das ScriptIgnore-Attribut verwenden, so: [ScriptIgnore(ApplyToOverrides = true)]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X