我在视图的同一子文件夹中有两个cshtml文件。其中一个模板意味着包含另一个模板。我尝试按如下方式完成:
主要模板:
<html>
<head></head>
<body>
@Html.Partial("~/Views/Pdfs/Header");
</body>
</html>
我得到的错误是
无法编译模板。名称&#39; Html&#39;在当前背景下不存在。
我还应该做些什么?
答案 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);