我正在尝试使用.cshtml
模板向RazorEngine发送电子邮件。 their site上的文档显示了如何将其与包含剃刀语法的字符串一起使用。如何通过加载.cshtml
文件来继续使用它?
这就是我所拥有的
string templatePath = "~/Templates/InitialApplicationBody.cshtml";
var result = Engine.Razor.RunCompile(templatePath, "templateKey", null, viewModel);
答案 0 :(得分:3)
从MVC控制器中,很容易从Razor视图(CSHTML文件)生成HTML。
我已经成功使用了Render a view as a string的已接受答案中的代码,并将其放在基本控制器中。
// Renders a Razor view, returning the HTML as a string
protected string RenderRazorViewToString<T>(string viewName, T model) where T : class
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
答案 1 :(得分:2)
Mailzory项目是发送具有Razor模板的电子邮件的便捷选择。 Mailzory在幕后使用了RazorEngine。
select n.ID, n.FirstName, n.LastName, c.FirstNameCount
from Names n
left outer join
(
select FirstName, count(*) as FirstNameCount
from Names
group by FirstName
) c
on n.FirstName = c.FirstName
这个项目在Github举办。还有一个nuget package可用于Mailzory。