【发布时间】: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 字符串。
【问题讨论】:
-
这不是工作代码,我认为 Web 代码不是控制台应用程序
-
我查看了您的问题,并想建议一种替代解决方案来查看渲染。您可以使用 Visual Studio T4 文本模板技术来使用预定义的模板结构来实现 html 字符串。 docs.microsoft.com/en-us/visualstudio/modeling/…希望这能解决您的问题。
标签: asp.net-core console-application html-email razorengine