如何解析Razor模板与自定义文件夹中的部分?

时间:2014-10-24 18:02:35

标签: razor razorengine

我在视图的同一子文件夹中有两个cshtml文件。其中一个模板意味着包含另一个模板。我尝试按如下方式完成:

主要模板:

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

我得到的错误是

  

无法编译模板。名称&#39; Html&#39;在当前背景下不存在。

我还应该做些什么?

2 个答案:

答案 0 :(得分:3)

正如Erik评论的那样,RazorEngine中没有Html(请参阅链接的答案),但您可以使用@Include("mytemplate")代替。

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

基本上你想要做的就是提供你自己的继承自TemplateBase<T>(或确切地说是ITemplate)的类,然后通过配置或@Inherit MyBaseClass<MyModel>语法设置它。在这种情况下,您只需从Html帮助程序类中的Include方法调用Partial方法。

答案 1 :(得分:0)

长期以来一直对此感到恼火。写了所有的基础结构类,让你的工作就像你在MVC中所期望的那样,没有MVC的全部负担:

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

https://github.com/b9chris/RazorEngineComplete