Gibt es eine Möglichkeit, das gerenderte HTML eines Elements basierend auf seinen Präsentationswerten aus dem Code dahinter abzurufen? In einem kürzlich durchgeführten Projekt musste dies getan werden, und wir kratzen derzeit unsere eigene Site mit einer weiteren Anfrage, die verschwenderisch erscheint.
3 Antworten
Leider glaube ich nicht, dass es einen sauberen Weg gibt, dies zu erreichen. Eine Benutzersteuerung hängt stark vom Durchlaufen des Seitenlebenszyklus und daher von einer HTTP-Anforderung ab. Sie haben auch häufig Abhängigkeiten von verschiedenen Teilen des Sitecore-Kontexts, die im Verlauf einer Anforderung aufgebaut werden.
Mit MVC haben Sie mehr Optionen, da Sie die Render-Methode direkt aufrufen können. Aber Sie müssen das Modell erst noch richtig aufbauen. Sie werden also wahrscheinlich immer noch Schwierigkeiten haben.
Wie Sie sagten, scheint es verschwenderisch, aber Screen Scraping ist der übliche Weg, um dies zu erreichen. Ich kenne einige vorhandene Module, die diesen Ansatz zum Indizieren von Seiteninhalten verwenden.
Normalerweise öffne ich eine Webanfrage und hole den Artikel. Wenn ich nur einen bestimmten Platzhalter benötige, beschränke ich den Zugriff über ?mode=placeholder-name
darauf.
Dies ist besonders nützlich, wenn Sie die Site crawlen und HTML in Ihrem Suchindex zwischenspeichern möchten.
Meinst du im Experience Editor? Wir hatten das gleiche Problem beim Versuch, Seiten für die Suche zu indizieren, die im Experience Editor entwickelt wurden. Wir haben eine HttpRequest für die Seite erstellt, den HTML-Code abgerufen, alle Tags entfernt und den Inhalt als _content indiziert. Wenn wir dann eine Schlüsselwortsuche durchführen wollten, haben wir uns mit _content abgeglichen. Hoffe das hilft. Charlie
Neue Fragen
asp.net
ASP.NET ist ein Microsoft-Framework für die Entwicklung von Webanwendungen, mit dem Programmierer dynamische Websites, Webanwendungen und Webdienste erstellen können. Es ist nützlich, dieses Tag in Verbindung mit dem Projekttyp-Tag zu verwenden, z. [asp.net-mvc], [asp.net-webforms] oder [asp.net-web-api]. Verwenden Sie dieses Tag NICHT für Fragen zu ASP.NET Core. Verwenden Sie stattdessen [asp.net-core].