2010-11-01 21 views
0

Lorsque vous utilisez N2 CMS:N2: définir des valeurs par défaut pour contentItems

Si je veux définir des valeurs par défaut lorsqu'un nouveau ContentItem est créé (par exemple, le réglage de la valeur CreatedByUser pour une nouvelle page, je peux enregistrer qui a créé à l'origine il) où est le meilleur endroit pour mettre ce code?

Je suppose que le constructeur de ContentItem n'est pas idéal car il sera appelé lorsque des objets existants sont chargés.

Répondre

1

Si vous utilisez la commande Get/syntaxe SetDetail alors vous pouvez faire quelque chose comme ça dans le getter de la propriété:

public virtual string TopImage 
{ 
    get { return (string)(GetDetail("TopImage") ?? string.Empty); } 
    set { SetDetail("TopImage", value); } 
} 

C'est un peu laid, donc il y a aussi une surcharge pour Get/Set détail qui permet vous spécifiez la valeur par défaut:

public virtual string TopImage 
{ 
    get { return GetDetail("TopImage", String.Empty /* Default */); } 
    set { SetDetail("TopImage", value, String.Empty /* Default */); } 
} 

Si vous souhaitez enregistrer une valeur quand quelque chose est sauvé puis essayez redéfinissant la méthode AddTo sur la ContentItem. Ceci est appelé chaque fois que l'objet est sauvegardé, donc faites attention si vous voulez l'appeler la première fois que quelque chose est sauvegardé (ID == 0 quand un objet est "nouveau")

+0

Merci, je suppose pour la technique SetDetail pour travailler, la propriété devra avoir un attribut 'Editable ...' pour que le moteur d'édition appelle le setter. Cela le rend un peu moche dans le cas des UserIDs que vous ne voulez pas nécessairement afficher aux éditeurs de contenu (ou leur permettre de modifier). Redéfinir la méthode AddTo avec une vérification d'identité semble bien, je vais regarder dans cela. – codeulike

+0

Vous n'avez pas besoin de l'attribut Editable pour que la valeur soit sauvegardée - Editable ajoute juste un peu de "magie" pour permettre à l'interface admin d'afficher le bon contrôle d'édition – spmason

+0

Bonjour, avez-vous réussi à résoudre votre problème? – spmason