-
Notifications
You must be signed in to change notification settings - Fork 0
Home
The TemplateEngine replaces values from properties of C# classes in template strings.
The C# class with the data holding properties is called the TemplateDataModel class.
The string with the placeholders is called a string template or template string.
You can bind the value from your C-property to your string template by using ${YourPropertyName}.
You can set a custom delimiters. Use the OpeningDelimiter and CloseingDelimiter properties to handle this.
Also you can access parameterless public methods of TemplateDataModell classes by using ${MethodName()} in your template.
The default is ${ for the start delimiter and } for the end delimiter.
Since Version 1.0.8 the Razor language is suporrted by
RazorTemplateEngine.
Person person = new Person
{
FirstName = "Jo",
LastName="Doe"
};
string template = "<MyTag>${FirstName}, ${LastName}</MyTag>";
TemplateEngine templateEngine = new TemplateEngine(person,template);
string outputString = templateEngine.CreateStringFromTemplate();
Console.Write(outputString); // Output: <MyTag>Jo, Doe</MyTag> Programm.cs
Person person = new Person
{
FirstName = "Jo",
Emails = new List<string>(){"[email protected]","[email protected]","[email protected]"}
};
ITemplateEngine<Person> templateEngine = new RazorTemplateEngine<Person>();
templateEngine.LoadTemplateFromFile<Person>("PersonEmailTemplate.cshtml");
string templateFileContent = templateEngine.CreateStringFromTemplate(person);
Console.WriteLine();
Console.WriteLine(templateFileContent);
var htmlFileName = Path.Combine(Path.GetTempPath(), "temp.html");
File.WriteAllText(htmlFileName, templateFileContent);Person.cs
namespace TemplateEngineVisualStudioCodeExample
{
public class Person: TemplateDataModel<Person>
{
public string FirstName { get; set; }
public List<string> Emails { get; set; }
}
}PersonEmailTemplate.cshtml
@inherits TemplateEngineVisualStudioCodeExample.Person
<p>Hallo @Model.FirstName. This are your Emails:</p>
@foreach (var email in @Model.Emails)
{
<p>email</p>
}NuGet Package: https://www.nuget.org/packages/MbSoftLab.TemplateEngine.Core/
PM> Install-Package MbSoftLab.TemplateEngine.Core