public void Should_be_able_to_use_project_layout_with_viewbag() { var projectRoot = Directory.GetCurrentDirectory(); var engine = RazorLightEngineFactory.Create(projectRoot); Email.DefaultRenderer = new RazorRenderer(engine); string template = @" @{ Layout = ""./Shared/_Layout.cshtml""; } sup @Model.Name here is a list @foreach(var i in Model.Numbers) { @i }"; dynamic viewBag = new ExpandoObject(); viewBag.Title = "Hello!"; var email = new Email(fromEmail) .To(toEmail) .Subject(subject) .UsingTemplate(template, new ViewModelWithViewBag { Name = "LUKE", Numbers = new[] { "1", "2", "3" }, ViewBag = viewBag }); Assert.AreEqual("<h1>Hello!</h1>\r\n<div>\r\nsup LUKE here is a list 123</div>", email.Data.Body); }
public void SetUp() { var engine = RazorLightEngineFactory.Create(); Email.DefaultRenderer = new RazorRenderer(engine); }
/// <summary> /// Add razor renderer with a RazorLightProject to support views and layouts /// </summary> /// <param name="builder"></param> /// <param name="razorLightProject"></param> /// <returns></returns> public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, RazorLightProject razorLightProject) { builder.Services.AddRazorLight(() => RazorLightEngineFactory.Create(razorLightProject)); builder.Services.AddSingleton <ITemplateRenderer, RazorRenderer>(); return(builder); }
/// <summary> /// Add razor renderer with embedded views and layouts /// </summary> /// <param name="builder"></param> /// <param name="embeddedResourceRootType"></param> /// <returns></returns> public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, Type embeddedResourceRootType) { builder.Services.AddRazorLight(() => RazorLightEngineFactory.Create(embeddedResourceRootType)); builder.Services.AddSingleton <ITemplateRenderer, RazorRenderer>(); return(builder); }