2010-12-07 4 views
5

Parfois Sitecore ne retournera pas certains éléments. Par exemple, dans le code suivant:Les éléments sont null dans Sitecore 6

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(id); 

Cela renverra nulle, si le même identifiant de chaîne est placée sur la recherche ci-dessus l'arborescence de contenu dans l'éditeur de contenu, il retournera l'article! La base de données de contexte est web et j'ai republié l'article plusieurs fois. J'utilise Sitecore 6.2.0 (rev 100701).

+0

J'ai renvoyé la question, car elle avait été mise à jour pour refléter la réponse - donc plus logique. –

Répondre

5

Etes-vous sûr que ce n'est pas une faute de frappe? Je veux dire, ne devriez-vous pas passer itemId au lieu de seulement id à GetItem? Je ne me souviens pas exactement comment cela fonctionne, mais si vous passez une chaîne à cette méthode, elle la traite probablement comme un chemin, pas un ID, et tente de résoudre l'élément par son chemin. Vous pouvez vérifier cela beaucoup plus vite que moi:

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(itemId); 
+0

ouais im sûr, désolé mon erreur en raison de copier coller précipité, im en utilisant une fonction utilitaire: public statique Sitecore.Data.Items.Item GetItemById (Sitecore.Data.ID id) { retourner Sitecore.Context.Database.GetItem (id); } – lurscher

+0

Probablement, l'élément n'est toujours pas dans la base de données Web? Il pourrait avoir des restrictions de publication ou ne pas avoir passé le flux de travail ... Essayez simple "sélectionnez * de Articles où ID = 'VOTRE-GUID-ICI" "contre DB Web pour vous assurer –

+1

ok j'ai découvert quelle est la cause ... il semble que sitecore n'aime pas quand l'utilisateur de sitecore de contexte est extranet/anonyme. Je me connecte en tant qu'utilisateur normal et cela fonctionne ... – lurscher

5

Je viens d'avoir le même problème - GetItem() retourne la fonction NULL

Après avoir tiré les cheveux pendant environ une heure, je trouve que ma fonction GetItem() est appelée par le frontal et l'utilisateur extranet/Anonymous n'ont pas accès en lecture à l'élément que j'essaie d'obtenir.

Alors, n'oubliez pas de vérifier la sécurité!

Questions connexes