2009-09-11 3 views

Antwort

117

Ich benutze das ScriptIgnore Attribut auf meinem Modell wie folgt:

public class Item 
{ 
    [ScriptIgnore] 
    public Item ParentItem { get; set; } 
} 

In diesem speziellen Szenario I wurde einen kreisförmigen Referenzfehler von der Json Serializer bekommen, so dass ich es einfach ignoriert. Ich war asking a similar question here on SO, als ich an den Unterschied zwischen einem Model und ViewModel eingeschaltet wurde.

+1

Was, wenn es nicht POCO, sondern ein generiertes EntityModel ist, möchte ich den generierten Code nicht bearbeiten, gibt es eine Problemumgehung zum Hinzufügen von ScriptIgnore-Attribut zum generierten Entitätsmodell. – hazimdikenli

+0

@hazimdikenli Sie müssen möglicherweise Teilklasse dafür verwenden. –

+11

Vergessen Sie nicht, einen Verweis auf „System.Web.Extensions“ hinzufügen für diese – Levitikon

26
[ScriptIgnore] 

ist Ihr huckaberry.

+4

+1 für Tombstone-Referenz. – jrummell

+1

Es ist eigentlich "Huckle Bearer", aber ich gebe dir +1 für die Mühe und den Film. :) –

+8

Die ursprüngliche Antwort ist richtig, er sagt "Huckleberry", nicht "Huckle Bearer". http://www.imsdb.com/scripts/Tombstone.html – heisenberg

2

Sie müssen nur die [ScriptIgnore(ApplyToOverrides = true)] in Ihre Textvorlage (.tt) Datei hinzufügen.

Hier ist ein Teil meiner Textvorlage vor

#> 
<#=codeStringGenerator.NavigationProperty(navigationProperty)#> 
<# 

Sobald ich den Code der Zeile oberhalb der codeStringGenerator meine Klassen automatisch generiert eingefügt und sah dies wie:

[ScriptIgnore(ApplyToOverrides = true)] 
public virtual ICollection<Currency> Currencies { get; set; } 

Ich musste auch ändern die UsingDirectives Funktion "using System.Web.Script.Serialization;"

+0

'ApplyToOverrides' scheint für eine virtuelle Eigenschaft sehr wichtig zu sein – Todd

1

Set Eigenschaft als interne einzufügen. Hängt jedoch von Ihrer Struktur ab. In Betracht ziehen.

Verwandte Themen