使用.Net Core Console应用程序将Razor视图渲染为字符串

时间:2018-12-28 13:32:24

标签: asp.net-core console-application html-email razorengine

我准备了一个.net核心控制台应用程序(框架版本.Net Core 2.2),用于将电子邮件作为服务发送。现在,将静态html内容硬编码到用于生成电子邮件正文字符串的服务方法中,它可以正常工作。 我正在寻找可以为我提供一种解决方案,以呈现剃刀视图以使HTML字符串包含模型数据的代码。

试图在实体框架版本中实现RazorEngine dll。 4.5。使用以下代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GenerateEmailUsingRazor.Model;
using RazorEngine.Templating;

namespace GenerateEmailUsingRazor
{
    class Program
    {
        static readonly string TemplateFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EmailTemplates");

        static void Main(string[] args)
        {
            var model = GetUserDetail();


            var emailTemplatePath = Path.Combine(TemplateFolderPath, "InviteEmailTemplate.cshtml");

            var templateService = new TemplateService();
            var emailHtmlBody = templateService.Parse(File.ReadAllText(emailTemplatePath), model, null, null);


            Console.WriteLine(emailHtmlBody);

            Console.ReadLine();

        }

        private static UserDetail GetUserDetail()
        {
            var model = new UserDetail()
                            {
                                Id = 1,
                                Name = "Test User",
                                Address = "Dummy Address"
                            };


            for (int i = 1; i <= 10; i++)
            {
                model.PurchasedItems.Add("Item No " + i);
            }
            return model;
        }
    }
}

预期结果:

控制台应用程序应呈现razor视图并向我提供结果html字符串。

1 个答案:

答案 0 :(得分:2)

我已经编写了一个干净的库Razor.Templating.Core,它可以在Web和控制台应用程序上与.NET Core 3.0、3.1一起使用。 它可以作为NuGet package使用。 安装完成后,您可以致电

var htmlString = await RazorTemplateEngine
                      .RenderAsync("/Views/ExampleView.cshtml", model, viewData);

注意:上面的代码片段不会立即起作用。请参阅以下有关如何应用的工作指南。

完整的工作指南:https://medium.com/@soundaranbu/render-razor-view-cshtml-to-string-in-net-core-7d125f32c79

示例项目:https://github.com/soundaranbu/RazorTemplating/tree/master/examples