MVC- und Umbraco-Integration


70

Ich habe die Schritte von http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html befolgt und MVC mit Erfolg in Umbraco integriert, aber ich habe immer noch ein Problem, das für mich kritisch ist.

Gibt es eine Möglichkeit, die von Umbraco definierten Vorlagen in einer MVC-Ansicht zu erben? Soweit ich weiß, besteht das Problem darin, dass die Umbraco-Vorlagen nur zur Laufzeit zu HTML werden und die doctype-Eigenschaften als @nodeNamenicht erkannt werden und aus diesem Grund die Ausnahme "Objektnullreferenz" ausgelöst wird.

Vielen Dank!


neugierig, wie es dir geht, hast du das zum
frostig

ein anderer, der neugierig ist - hast du das sortiert?
Fleisch

7
Ich denke, die nächste Version von Umbraco wird ASP.Net MVC verwenden. Our.umbraco.org/wiki/user-groups/australia-and-new-zealand/…
Ziel Kai

6
Sie sagen, dass der nächste Umbraco MVC-basiert sein wird. Ich würde darauf warten.
Schildkrötenpick

1
Ein Jahr später füge ich hier meinen kleinen Kommentar hinzu: Umbraco 4.10+ und insbesondere Umbraco 6+ unterstützen jetzt MVC.
Funka

Antworten:


7

Diese Frage ist sehr alt und für die aktuellen Versionen von Umbraco nicht relevant.

Nur für den Fall, dass es noch niemandem bewusst ist - Alle Versionen von Umbraco seit 2013 (6, 7 und jetzt 8) unterstützen MVC


5

Nach einem Blick auf den Blog-Beitrag scheint dies nicht wirklich in Umbraco integriert zu sein, sondern arbeitet mit Umbraco zusammen.

Insofern ist es effektiv sein eigener HttpHandler. Dies bedeutet, dass der Umbraco Httphandler und eine ganze Reihe von Umbraco-Funktionen in Bezug auf Vorlagen und das CMS selbst umgangen werden.

MVC dazu zu bringen, Umbraco-Vorlagen zu verwenden, ist (wahrscheinlich) ohne Änderungen an der Kernanwendung (in Version 4+) nicht möglich. Dies bedeutet jedoch nicht, dass Sie MVC nicht neben Umbraco verwenden können, da Umbraco als Inhaltsrepository für eine MVC-Anwendung fungiert.

Sie können problemlos MVC-Controller erstellen, die Daten aus Umbraco abrufen und diese Ihren Ansichten zur Verfügung stellen. Zum Beispiel könnten Sie Umbraco Linq2Umbraco dafür verwenden.

Wenn Sie mehr Details zu den genauen Fehlern angeben, die Sie erhalten, und genau das, was Sie erreichen möchten, liegt die Lösung möglicherweise darin, wie Sie Ihre Anwendung strukturieren, anstatt zu versuchen, Umbraco 4+ brutal zu zwingen, etwas zu tun, das nativ ist in Umbraco 5 (dessen Veröffentlichung für dieses Jahr geplant ist). Der Quellcode für 5 befindet sich auf Codeplex und ist möglicherweise ein guter Ort, um zu sehen, wie das Umbraco-Kernteam dies angeht .

Hier gibt es eine alte Diskussion darüber: http://forum.umbraco.org/yaf_postst5106_Using-ASPNET-MVC-with-Umbraco.aspx

und in jüngerer Zeit hier: http://our.umbraco.org/forum/getting-started/installing-umbraco/2668-Use-Umbraco-with-aspnet-MVC

Weitere Informationen finden Sie hier: http://our.umbraco.org/forum/developers/extending-umbraco/17523-Umbraco-461-and-MVC-3

und noch mehr hier: http://our.umbraco.org/forum/developers/extending-umbraco/6837-Umbraco-Website-And-MVC-Website-In-ONE


2

Anstatt zu versuchen, die Umbraco-Steuerelemente zu verwenden, sollten Sie einige HtmlHelper-Erweiterungsmethoden schreiben , die die umbraco.NodeFactory.Node- Klasse verwenden, um den Inhalt abzurufen , den Sie in Ihren Ansichten anzeigen möchten . Schreibmethoden, die nachahmen (oder je nach Ihren Anforderungen vereinfachen) umbraco.presentation.templateControls.Itemund umbraco.presentation.templateControls.Macromöglicherweise für Sie ausreichen.

BEARBEITEN

Ich bin diesen Weg mit einigem Erfolg gegangen. Ich habe mir auch die MVC-Quelle angesehen, um herauszufinden, wie Teilansichten zur zugrunde liegenden Sammlung von Webformular-Steuerelementen hinzugefügt wurden. Am Ende habe ich eine Klasse geschrieben, die von der umbraco.presentation.templateControls.MacroKlasse erbt, die der Klasse sehr ähnlich sieht System.Web.Mvc.ViewUserControl.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.