Was ist der Zweck und wann sollte ich einen SurfaceController vs RenderMvcController verwenden? Es scheint, dass ich mit einem SurfaceController wirklich nichts machen kann, was ich mit RenderMvcController nicht machen kann. Zum Beispiel denke ich speziell über die Handhabung der Formularübermittlung nach. Mit RenderMvcController kann ich tun:
%Vor%Dies scheint mir MVC mehr zu entsprechen, insbesondere da ich Pakete wie UmbracoMapper verwenden kann, um den aktuellen Umbraco-Knoten einem Ansichtsmodell zuzuordnen und dieses an meinen View zu übergeben? Warum und wann sollte ich einen SurfaceController verwenden?
Wenn ich so geneigt war, konnte ich RenderMvcController verwenden, um jede Route für einen bestimmten Knoten zu übernehmen, was mir mehr Kontrolle über meine Anwendung gab, ein bisschen mehr wie eine reine ASP.NET MVC App. Ist das eine gute Sache?
Aus der offiziellen Dokumentation:
Oberflächencontroller
Ein SurfaceController ist ein MVC-Controller, der mit dem Front-End-Rendering einer UmbracoPage. Sie können zum Rendern verwendet werden Child Action-Inhalt für die Verarbeitung von Formulardatenübermittlungen und für Rendering Child Aktion Makros. SurfaceControllers werden automatisch weitergeleitet Dies bedeutet, dass Sie für diese keine eigenen Routen hinzufügen / erstellen müssen Controller zu arbeiten.
Quelle: Ссылка
Benutzerdefinierte Controller
Standardmäßig wird das gesamte Front-End-Routing über die. ausgeführt Umbraco.Web.Mvc.RenderMvcController Index Aktion, die funktionieren sollte gut für die meisten Leute. In einigen Fällen möchten die Menschen jedoch möglicherweise abgeschlossen Kontrolle über diese Ausführung und möchte möglicherweise ihre eigene Aktion ausführen. Einige Gründe dafür können sein: genau zu kontrollieren, wie Ansichten sind gerenderte, benutzerdefinierte / granulare Sicherheit für bestimmte Seiten / Vorlagen oder zu in der Lage sein, jeden benutzerdefinierten Code in dem Controller auszuführen, der den Vorderes Ende. Die gute Nachricht ist, dass dies vollständig möglich ist. Dies Prozess dreht sich alles um Konvention und es ist wirklich einfach!
Quelle: Ссылка
Hilft das? Sie haben Recht, ich denke, der einzige wirkliche Unterschied mit dem Surface-Controller ist das automatische Routing.
Simon
Der Unterschied liegt hauptsächlich in der beabsichtigten Verwendung. Sie werden feststellen, dass einer in den meisten Fällen funktioniert.
Der Oberflächencontroller wird verwendet, wenn Sie einige Benutzerinteraktionen in dieser Ansicht haben. Wie die Einreichung von Formularen. Es enthält einige Hilfsmethoden für Weiterleitungen wie
%Vor%RenderMvcController stellt eine Sicherheitseigenschaft vom Typ WebSecurity zur Verfügung, die in einigen Fällen hilfreich sein kann. Einige der Methoden sind
%Vor%Tags und Links umbraco