Kephas.Templating.Razor 11.0.0-dev.3

Prefix Reserved
This is a prerelease version of Kephas.Templating.Razor.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Kephas.Templating.Razor --version 11.0.0-dev.3                
NuGet\Install-Package Kephas.Templating.Razor -Version 11.0.0-dev.3                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kephas.Templating.Razor" Version="11.0.0-dev.3" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kephas.Templating.Razor --version 11.0.0-dev.3                
#r "nuget: Kephas.Templating.Razor, 11.0.0-dev.3"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kephas.Templating.Razor as a Cake Addin
#addin nuget:?package=Kephas.Templating.Razor&version=11.0.0-dev.3&prerelease

// Install Kephas.Templating.Razor as a Cake Tool
#tool nuget:?package=Kephas.Templating.Razor&version=11.0.0-dev.3&prerelease                

Templating.Razor

Introduction

This package provides the implementation of templating using Razor syntax and *.cshtml files. The cshtml template kind is handled by the RazorTemplatingEngine.

Usage

This is the content of the template.cshtml file.

@model TemplateModel
<div>Hi @Process(Model.Name)!</div>
@functions {
    private string Process(string str)
    {
        return $"@{str}@";
    }
}
record TemplateModel(string Name);

// normally you would get the processor injected into the service constructor.
var processor = injector.Resolve<ITemplateProcessor>();

var result = processor.Process(new FileTemplate("C:\\Path\\To\\template.cshtml"), new TemplateModel("Johnny"));
Assert.Equals("<div>Hi @Johnny@!</div>\r\n", result);

// this is a simpler alternative for Razor file templates.
var result = processor.ProcessWithFile("C:\\Path\\To\\template.cshtml", new TemplateModel("Johnny"));
Assert.Equals("<div>Hi @Johnny@!</div>\r\n", result);

// it is also possible to use string templates.
var template = @"
@model TemplateModel
<div>Hi @Process(Model.Name)!</div>
@functions {
    private string Process(string str)
    {
        return $""@{str}@"";
    }
}
";
var result = processor.ProcessWithRazor(template, new TemplateModel("Johnny"));
Assert.Equals("<div>Hi @Johnny@!</div>\r\n", result);

Additional services

All the enumerated services provide a default implementation which can be overridden if required. However, this should be rarely needed, instead configure the template generation

IMetadataReferenceManager

This internal service is used to provide MetadataReferences out of a list of assemblies.

IRazorProjectFileSystemProvider

Based on the template and the processing context, this service should provide a RazorProjectFileSystem used by the renderer.

The default implementation SimpleRazorProjectFileSystemProvider uses a simple strategy which handles a single template file without any additional template references.

IRazorProjectEngineFactory

Creates the Razor project engine for the provided file system and with the given context.

IRazorPageGenerator

Generates the C# code based on the provided project engine and item.

IRazorPageCompiler

Compiles the template with model type T and returns a ICompiledRazorPage<T> wrapped into an operation result.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
11.1.0 498 4/13/2022
11.1.0-dev.4 134 4/6/2022
11.1.0-dev.3 117 3/30/2022
11.1.0-dev.2 125 3/23/2022
11.1.0-dev.1 119 3/23/2022
11.0.0 450 3/11/2022
11.0.0-dev.7 127 3/7/2022
11.0.0-dev.6 123 2/28/2022
11.0.0-dev.5 125 2/26/2022
11.0.0-dev.4 130 2/24/2022
11.0.0-dev.3 129 2/23/2022
11.0.0-dev.2 127 2/18/2022