Verwenden von Razor außerhalb von MVC in .NET Core
Möchte ich nutzen, Razor wie eine Template-engine in einem .NET-Konsolenanwendung, die ich im schreiben bin .NET Core.
Standalone-Razor-Motoren, denen ich begegnet bin (RazorEngine, RazorTemplates) erfordern alle voll .NET. Ich bin auf der Suche nach einer Lösung, die arbeitet mit .NET Core.
InformationsquelleAutor der Frage Christof Jans | 2016-07-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kürzlich habe ich eine Bibliothek namens RazorLight.
Es hat keine redundanten Abhängigkeiten, wie ASP.NET MVC-Teile und kann verwendet werden, in Konsole-Anwendungen. Für jetzt ist es nur unterstützt .NET Core (NetStandard1.6) - aber das ist genau das, was Sie brauchen.
Hier ein kurzes Beispiel:
InformationsquelleAutor der Antwort Toddams
Gibt es ein funktionierendes Beispiel für .NET Core 1.0 auf aspnet/Entropie/samples/Mvc.RenderViewToString. Da sich dies ändern könnte oder Weg gehen, werde ich ausführlich der Ansatz, den ich verwende in meinen eigenen Anwendungen hier.
Tl;dr - Razor funktioniert wirklich gut, außerhalb von MVC! Dieser Ansatz behandeln kann, komplexere rendering-Szenarien wie teilweise auf und injizieren von Objekten in Aussicht, aber ich werde nur zeigen Sie ein einfaches Beispiel unten.
Core service sieht wie folgt aus:
RazorViewToStringRenderer.cs
Einen einfachen test-console-app muss nur zum initialisieren der service (und einige unterstützende Dienste), und nennen es:
Programm.cs
Davon ausgegangen, dass Sie einen view-model-Klasse:
EmailViewModel.cs
- Und layout-und view-Dateien:
Views/_Layout.cshtml
Views/EmailTemplate.cshtml
InformationsquelleAutor der Antwort Nate Barbettini
Hier ist ein Beispielcode, der nur abhängig von Razor (für Analyse-und C# - code generation) und Roslyn (für C# - code-Kompilierung, aber man könnte die alten CodeDom).
Es ist kein MVC in diesem Stück code, also kein Blick, keine .cshtml-Dateien, kein Controller, nur Razor-source-Analyse und kompilierte runtime-Ausführung. Es gibt immer noch die Vorstellung von Modell, obwohl.
Werden Sie nur müssen hinzufügen, die folgenden nuget-Pakete:
Microsoft.AspNetCore.Razor.Language
(v2.1.1),Microsoft.AspNetCore.Razor.Runtime
(v2.1.1) undMicrosoft.CodeAnalysis.CSharp
(v2.8.2) nugets.In diesem C# - source-code ist kompatibel mit NETCore, NETStandard 2 und .NET-Framework. Um es zu testen, erstellen Sie einfach eine .NET framework oder .NET-core-console-app, fügen Sie es, und fügen Sie die nugets.
InformationsquelleAutor der Antwort Simon Mourier
Hier ist eine Klasse, um Nate ' s Antwort arbeiten wie ein scoped-service in einem ASP.NET Core-2.0-Projekt.
Starten.cs
In einem controller
InformationsquelleAutor der Antwort ArcadeRenegade