Comment obtenir du contenu de rendu par programme?

J’essaie d’écrire une méthode qui générera le contenu (c.-à-d. HTML) pour tout rendu existant dans un espace réservé spécifique. Le but est de transmettre un Sitecore.Data.Items.Item et la clé de substitution qui m’intéresse, et la méthode devrait renvoyer le contenu rendu.

Le problème avec ceci semble être qu’il n’y a pas de contexte de page établi, et donc l’appel de RenderControl() GetCacheKey() erreur de référence null dans la méthode GetCacheKey() de Sublayout.

Est-ce que quelqu’un connaît un moyen de rendre un rendu Sublayout ou XSLT par programme?

Voici ce que j’ai jusqu’à présent:

 private ssortingng GetPlaceholderContent(Item item, ssortingng placeHolder) { SsortingngWriter sw = new SsortingngWriter(); using (HtmlTextWriter writer = new HtmlTextWriter(sw)) { foreach (RenderingReference renderingReference in item.Visualization.GetRenderings(Sitecore.Context.Device, false)) { if (renderingReference.Placeholder == placeHolder) { // This ensures we're only dealing with Sublayouts if (renderingReference.RenderingItem.InnerItem.IsOfType(Sitecore.TemplateIDs.Sublayout)) { var control = renderingReference.GetControl(); control.RenderControl(writer); // Throws null reference error in GetCacheKey() } } } } return sw.ToSsortingng(); } 

À mon avis, le meilleur moyen de restituer un Sublayout par programmation consiste à utiliser un répéteur et à placer une dans .

À partir de là, vous ne devez effectuer qu’un ou les deux processus suivants:

  1. Définissez la propriété DataSource de comme étant la représentation sous forme de chaîne du GUID de l’élément souhaité (c.-à-d. La source de données pour le sous-groupement, le cas échéant)

  2. Définissez la propriété Path de sur le chemin d’access au sous-découpage à rendre.

Le serveur / sitecore se chargera du rest.