【问题标题】:Render Razor View into String using .Net Core Console Application使用 .Net Core 控制台应用程序将 Razor 视图渲染为字符串
【发布时间】:2019-05-26 07:55:33
【问题描述】:

我准备了一个 .net core 控制台应用程序(框架版本 .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;
        }
    }
}

预期结果:

控制台应用程序应该呈现剃刀视图并为我提供生成的 html 字符串。

【问题讨论】:

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


【解决方案1】:

我编写了一个干净的库 Razor.Templating.Core,它可在 Web 和控制台应用程序上与 .NET Core 3.0、3.1 一起使用。 它的地址为NuGet package。 安装后可以调用like

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

注意:上面的 sn-p 不会立即起作用。有关如何应用它,请参阅以下工作指南。

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

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

【讨论】:

  • 你的图书馆不适合我。我在我的项目中使用视图将文件夹 LetterTemplates 以及当我调用 var htmlString = await RazorTemplateEngine.RenderAsync("/LetterTemplates /Previews/_Preview.cshtml", model, viewData);我收到:无法找到视图“/LetterTemplates /Previews/_Preview.cshtml”。搜索了以下位置:/LetterTemplates /Previews/_Preview.cshtml
  • @alex-white 我不知道你是如何应用这个库的。这是有关如何使用它的完整指南medium.com/@soundaranbu/… 也可以在这里查看示例项目github.com/soundaranbu/RazorTemplating/tree/master/examples 如果您仍然遇到问题,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多