Carubbi.LayoutTemplateEngine.Interfaces
2.1.0
dotnet add package Carubbi.LayoutTemplateEngine.Interfaces --version 2.1.0
NuGet\Install-Package Carubbi.LayoutTemplateEngine.Interfaces -Version 2.1.0
<PackageReference Include="Carubbi.LayoutTemplateEngine.Interfaces" Version="2.1.0" />
<PackageVersion Include="Carubbi.LayoutTemplateEngine.Interfaces" Version="2.1.0" />
<PackageReference Include="Carubbi.LayoutTemplateEngine.Interfaces" />
paket add Carubbi.LayoutTemplateEngine.Interfaces --version 2.1.0
#r "nuget: Carubbi.LayoutTemplateEngine.Interfaces, 2.1.0"
#:package Carubbi.LayoutTemplateEngine.Interfaces@2.1.0
#addin nuget:?package=Carubbi.LayoutTemplateEngine.Interfaces&version=2.1.0
#tool nuget:?package=Carubbi.LayoutTemplateEngine.Interfaces&version=2.1.0
Carubbi.LayoutTemplateEngine
Layout engine wrappers for Razor, NVelocity and Scriban, plus a shared abstraction.
An abstraction over layout template engines like Razor or NVelocity. This kind of component is useful to create email templates, for example. The implementations can be injected using any dependency injection container.
Projects
| Project | Package | Engine |
|---|---|---|
Carubbi.LayoutTemplateEngine.Interfaces |
Carubbi.LayoutTemplateEngine.Interfaces |
Shared ILayoutTemplateEngine abstraction |
Carubbi.LayoutTemplateEngine.Razor |
Carubbi.LayoutTemplateEngine.Razor |
Razor via RazorEngineCore (master-page aware) |
Carubbi.LayoutTemplateEngine.NVelocity |
Carubbi.LayoutTemplateEngine.NVelocity |
NVelocity |
Carubbi.LayoutTemplateEngine.Scriban |
Carubbi.LayoutTemplateEngine.Scriban |
Scriban |
Target framework: net10.0. Requires .NET 10 SDK.
Usage
All engines implement Carubbi.LayoutTemplateEngine.Interfaces.ILayoutTemplateEngine:
public interface ILayoutTemplateEngine
{
string RenderTemplate(string templateName, IDictionary<string, object> data);
string RenderTemplate(string masterPage, string templateName, IDictionary<string, object> data);
string RenderFromContentTemplate(string content, IDictionary<string, object> data);
}
Razor
var engine = new Carubbi.LayoutTemplateEngine.Razor.RazorEngine();
var data = new Dictionary<string, object> { ["Name"] = "World" };
var result = engine.RenderFromContentTemplate("Hello @Model[\"Name\"]!", data);
// "Hello World!"
var fromFile = engine.RenderTemplate("C:\\templates\\email.cshtml", data);
Master-page rendering embeds the child template output as @Model["TemplateBody"]:
var html = engine.RenderTemplate("C:\\templates\\layout.cshtml", "C:\\templates\\content.cshtml", data);
// layout.cshtml: <html><body>@Model["TemplateBody"]</body></html>
Scriban
var engine = new Carubbi.LayoutTemplateEngine.Scriban.ScribanEngine();
var data = new Dictionary<string, object> { ["Name"] = "World" };
var result = engine.RenderFromContentTemplate("Hello {{ Name }}!", data);
// "Hello World!"
var fromFile = engine.RenderTemplate("C:\\templates\\email.scriban", data);
Master-page rendering embeds the child template output as {{ TemplateBody }}:
var html = engine.RenderTemplate("C:\\templates\\layout.scriban", "C:\\templates\\content.scriban", data);
// layout.scriban: <html><body>{{ TemplateBody }}</body></html>
NVelocity
Templates are resolved by name within a templates directory. A VelocityContext is populated from the data dictionary.
var engine = new Carubbi.LayoutTemplateEngine.NVelocity.NVelocityEngine(@"C:\templates");
var data = new Dictionary<string, object> { ["Name"] = "World" };
var result = engine.RenderFromContentTemplate("Hello $Name!", data);
// "Hello World!"
// content.vm: Greetings $Name
// master.vm: <html><body>$TemplateBody</body></html>
var html = engine.RenderTemplate("master.vm", "content.vm", data);
// "<html><body>Greetings World</body></html>"
NuGet
dotnet add package Carubbi.LayoutTemplateEngine.Razor
dotnet add package Carubbi.LayoutTemplateEngine.NVelocity
dotnet add package Carubbi.LayoutTemplateEngine.Scriban
dotnet add package Carubbi.LayoutTemplateEngine.Interfaces
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Carubbi.LayoutTemplateEngine.Interfaces:
| Package | Downloads |
|---|---|
|
Carubbi.LayoutTemplateEngine.NVelocity
NVelocity layout template engine wrapper |
|
|
Carubbi.LayoutTemplateEngine
Razor (RazorEngineCore) layout template engine wrapper |
|
|
Carubbi.LayoutTemplateEngine.Scriban
Scriban layout template engine wrapper |
|
|
Carubbi.LayoutTemplateEngine.Razor
Razor (RazorEngineCore) layout template engine wrapper |
GitHub repositories
This package is not used by any popular GitHub repositories.