J'ai une classe POCO qui est envoyée au navigateur en tant que chaîne JSON dans .NET 3.5 sp1. J'utilise simplement la sérialisation JSON par défaut et j'ai certains champs que je veux ignorer. Je veux mettre un attribut similaire à [System.Xml.Serialization.XmlIgnore] sur eux afin qu'ils ne soient pas sérialisés.
J'utilise l'attribut ScriptIgnore sur mon modèle comme ceci:
public class Item
{
[ScriptIgnore]
public Item ParentItem { get; set; }
}
Dans ce scénario particulier, je recevais une erreur de référence circulaire du sérialiseur Json, donc je l'ai simplement ignoré. J'étais posant une question similaire ici sur SO quand j'ai été excité à la différence entre un modèle et ViewModel.
[ScriptIgnore]
est votre huckaberry.
Vous avez juste besoin d'ajouter la [ScriptIgnore(ApplyToOverrides = true)]
dans votre fichier de modèle de texte (.tt).
Voici une partie de mon modèle de texte avant
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
Une fois que j'ai inséré le code, la ligne au-dessus de codeStringGenerator
mes classes a généré automatiquement et ressemblait à ceci:
[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }
J'ai également dû modifier la fonction UsingDirectives
pour insérer "using System.Web.Script.Serialization;"
Définissez la propriété comme interne. Cela dépend de votre structure, cependant. Prendre en considération.