如何使用自定义文件夹中的片段解析Razor模板?

如何使用自定义文件夹中的片段解析Razor模板?,razor,razorengine,Razor,Razorengine,我在视图的同一子文件夹中有两个cshtml文件。其中一个模板包含另一个模板。我试图做到以下几点: 主模板: <html> <head></head> <body> @Html.Partial("~/Views/Pdfs/Header"); </body> </html> @Html.Partial(“~/Views/Pdfs/Header”); 我得到的错误是 无法编译模板。当前上下文中不存在名称“

我在视图的同一子文件夹中有两个cshtml文件。其中一个模板包含另一个模板。我试图做到以下几点:

主模板:

<html>
  <head></head>
  <body>
    @Html.Partial("~/Views/Pdfs/Header");
  </body>
</html>

@Html.Partial(“~/Views/Pdfs/Header”);
我得到的错误是

无法编译模板。当前上下文中不存在名称“Html”


我还应该做什么?

正如Erik所评论的,RazorEngine中没有Html(请参见链接的答案),但是您可以使用
@Include(“mytemplate”)

如果出于某种原因希望与
@Html.Partial()
语法兼容,可以扩展RazorEngine语法,如


基本上,您要做的是提供您自己的类继承自
TemplateBase
(确切地说是
ITemplate
),然后通过配置或
@Inherit MyBaseClass
语法进行设置。在这种情况下,您可以从Html helper类中的
Partial
方法调用
Include
方法。

对此很长一段时间感到恼火。编写了所有基础结构类,以使其能够像您在MVC中所期望的那样工作,而不必承担所有MVC负担:

var razor = RazorHelper.O;
var html = razor.RenderFromMvc(@"Views\RazorEngine\TestEmail.cshtml", vm);

什么是
O
的可能重复<代码>虚拟机是视图模型吗?是的,虚拟机是视图模型。O是单身汉。