我想用我的Razor视图为某种模板发送电子邮件的,所以我想“拯救”我的模板在视图中,它读入控制器作为一个字符串,做一些必要的更换,然后将其发送。
我有解决方案,它的工作原理:我的模板被托管的地方作为一个HTML页面,但我想,以放入我的应用程序(即在我看来)。 我不知道如何读一个视图在我的控制器的字符串。
我想用我的Razor视图为某种模板发送电子邮件的,所以我想“拯救”我的模板在视图中,它读入控制器作为一个字符串,做一些必要的更换,然后将其发送。
我有解决方案,它的工作原理:我的模板被托管的地方作为一个HTML页面,但我想,以放入我的应用程序(即在我看来)。 我不知道如何读一个视图在我的控制器的字符串。
我用的是以下内容。 把它放在你的基地控制器上,如果你有一个,这样你可以访问它的所有控制器。
public static string RenderPartialToString(Controller controller, string viewName, object model)
{
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
看看在RazorEngine库,这不正是你想要的东西。 我之前已经使用了电子邮件模板,和它的伟大工程。
你可以这样做:
// Read in your template from anywhere (database, file system, etc.)
var bodyTemplate = GetEmailBodyTemplate();
// Substitute variables using Razor
var model = new { Name = "John Doe", OtherVar = "Hello!" };
var emailBody = Razor.Parse(bodytemplate, model);
// Send email
SendEmail(address, emailBody);