在 ASP .NET Core 中,我们可以使用 Razor 模板引擎来渲染 HTML 内容。为了将 View Model 包含在激活邮件中,我们需要使用 Razor 模板引擎来渲染邮件内容,并将 View Model 传递给模板。以下是实现此功能的代码示例。
首先,我们需要创建一个包含激活链接的邮件模板。在这个模板中,我们可以使用 C# 代码来访问 View Model 的属性并将其放置在邮件正文中。以下是一个简单的邮件模板示例:
激活邮件
请点击以下链接来激活您的帐户:
激活链接
创建模板后,我们需要使用 Razor 模板引擎来渲染邮件内容。以下是一个示例方法,该方法获取模板名称和 View Model 作为参数,并返回渲染后的 HTML 内容:
private string RenderEmailTemplate(string templateName, object model)
{
var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
{
Model = model
};
using var sw = new StringWriter();
var viewResult = _razorViewEngine.FindView(ActionContext, templateName, false);
if (viewResult.View == null)
{
throw new ArgumentNullException($"{templateName} 视图不存在");
}
var viewContext = new ViewContext(ActionContext, viewResult.View, viewData,
new TempDataDictionary(ActionContext.HttpContext, _tempDataProvider), sw,
new HtmlHelperOptions());
viewResult.View.RenderAsync(viewContext).Wait();
return sw.GetStringBuilder().ToString();
}
在这个方法中,我们首先创建一个 ViewDataDictionary 对象