2016-05-03 11 views
6

habe ich eine Sitecore-Anwendung, die diese Methode verwenden:Sitecores Ansicht Rendering und Controller-Rendering Helper

@Html.Sitecore().ViewRendering("Path to the View") 
@Html.Sitecore().Controller("Controller Name", "Controller Action") 

Diese völlig in Ordnung, funktioniert auch ohne erstelle ich einen Artikel für das Rendering in Sitecore CMS

Was ist dann der Unterschied zwischen dieser Methode mit einfachen ASP MVC-Methode:

Beide gleich oder nicht? Ich fühle mich hier etwas verwirrt

Antwort

10
@Html.Sitecore().ViewRendering("Path to the View") 

mvc.renderRendering Pipeline ausgelöst wird. Und Ihre Ansicht wird fast auf die gleiche Weise gerendert, wenn Sie sie zum Platzhalter hinzufügen. Der Unterschied zu Html.Partial liegt im Bearbeitungszyklus Ihrer Ansicht. Das gerenderte Ergebnis kann unterschiedlich sein, wenn Sie auf etwas in dieser Pipeline angewiesen sind (z. B. Caching wie @Gatogordo). (oder wenn Sie selbst einen Prozessor hinzugefügt haben). Wenn Sie möchten, machen die gleiche sein, wenn man sie dann Html.Sitecore verwenden über Platzhalter() hinzufügen. ViewRendering

Für

@Html.Sitecore().Controller("Controller Name", "Controller Action") 

und

@Html.Action("Controller Name", "Controller Action") 

Unterschied ist auch in Es ist der Ausführungszyklus. Sitecore Einsen wird über ControllerRunner ausgeführt, das Controller von SitecoreControllerFactory erhält und einige Aktion ausführen. ASP.Net MVC Aktion wird über HttpContext.Server.Execute ausgeführt und tatsächlich das gleiche. Aber wenn ich auf die Implementierung schaue, kann ich eine der Unterschiede im Routing vermuten. Im Fall der Verwendung von ASP.Net MVC-Helper können Ihre Routenwerte Sie zu einem bestimmten Sitecore-Element bringen, anstatt die erforderliche Controller-Aktion, wenn sie übereinstimmen. Der Sitecore-Helfer führt immer den Controller aus.

Wenn Sie weitere Details benötigen, können Sie System.Web.Mvc.Html.ChildActionExtensions.Action und Sitecore.Mvc.Helpers.SitecoreHelper.Controller im Reflektor öffnen und sie Schritt für Schritt vergleichen.

+0

Danke, gute Erklärungen – gill23

1

Beide sind ähnlich, aber nicht genau gleich. Die aus dem Sitecore-Helper fügen den üblichen MVCs einen kleinen Sitecore-Geschmack hinzu (zum Beispiel das Hinzufügen von Caching-Möglichkeiten), haben aber auch einen (kleinen) Leistungseinbruch.

Es ist eine Wahl, die gemacht werden muss, und es hängt von Ihrem Rendering und Kontext ..