using System.Threading.Tasks; using Xunit; namespace RazorLight.Tests.Snippets { using Core; public class Snippets { public class ViewModel { public string Name { get; set; } } [Fact] public async Task Simple() { #region Simple var engine = new RazorLightEngineBuilder() // required to have a default RazorLightProject type, // but not required to create a template from string. .UseEmbeddedResourcesProject(typeof(ViewModel)) .SetOperatingAssembly(typeof(ViewModel).Assembly) .UseMemoryCachingProvider() .Build(); string template = "Hello, @Model.Name. Welcome to RazorLight repository"; ViewModel model = new ViewModel {Name = "John Doe"}; string result = await engine.CompileRenderStringAsync("templateKey", template, model); #endregion Assert.NotNull(result); } async Task RenderCompiledTemplate(RazorLightEngine engine, object model) { #region RenderCompiledTemplate var cacheResult = engine.Handler.Cache.RetrieveTemplate("templateKey"); if(cacheResult.Success) { var templatePage = cacheResult.Template.TemplatePageFactory(); string result = await engine.RenderTemplateAsync(templatePage, model); } #endregion } async Task FileSource() { #region FileSource var engine = new RazorLightEngineBuilder() .UseFileSystemProject("C:/RootFolder/With/YourTemplates") .UseMemoryCachingProvider() .Build(); var model = new {Name = "John Doe"}; string result = await engine.CompileRenderAsync("Subfolder/View.cshtml", model); #endregion } async Task EmbeddedResourceSource() { #region EmbeddedResourceSource var engine = new RazorLightEngineBuilder() .UseEmbeddedResourcesProject(typeof(SomeService).Assembly) .UseMemoryCachingProvider() .Build(); var model = new Model(); string html = await engine.CompileRenderAsync("EmailTemplates.Body", model); #endregion } async Task EmbeddedResourceSourceWithRootNamespace() { #region EmbeddedResourceSourceWithRootNamespace var engine = new RazorLightEngineBuilder() .UseEmbeddedResourcesProject(typeof(SomeService).Assembly, "Project.Core.EmailTemplates") .UseMemoryCachingProvider() .Build(); var model = new Model(); string html = await engine.CompileRenderAsync("Body", model); #endregion } public class Model { } } } namespace RazorLight.Tests.Snippets.Core { public class SomeService { } }