【发布时间】:2012-05-12 20:20:27
【问题描述】:
我想将以下 Razor 模板与 RazorEngine 一起使用:
@{
Layout = null;
}
@Html.Raw(MyNamespace.MyClass.SomePropertyWithHtml)
当我调用它时,我得到 2 个错误 - 一个抱怨它无法处理 Layout,另一个抱怨它不知道如何处理 Html 帮助程序。
这里还有其他问题和答案表明这在 v3 中是可能的,我正在使用 NuGet 上的当前包 - v3.0.8 - 但目前尚不清楚这是如何完成的。目前我这样称呼它:
string html = RazorEngine.Razor.Parse(File.ReadAllText(path));
其他答案建议先使用 Razor.SetBaseTemplate,它不会出现在当前源代码或 git 上的 3.0 分支中。查看代码我看到引用布局和部分的代码,但布局代码似乎依赖于按名称解析模板,而我正在尝试做的甚至不需要解析模板 - 我只需要它来应对布局 = null。该代码还包括一个 MvcTemplateBase,它似乎在 Web 项目中提供了一个 HtmlHelper - 但它是该项目中唯一的类,并且在 Web 或核心项目中的任何地方都没有引用。
这个类似的问题: RazorEngine issues with @Html
只是指向主页的链接,说明您可以在那里找到更多信息 - 主页只是描述项目的简短句子。
那么,如何使用 RazorEngine v3.0 解析上述 Razor 视图?
【问题讨论】:
-
哦,您使用的是 RazorEngine...要记住的一件事是 Razor 不是 MVC。新的 RazorEngine 已经完成了很多工作,但 Antaris 最近真的很忙。您应该可以在文件顶部使用
@inherits MvcTemplateBase<T>来使用它。 -
感谢您的建议。我意识到 Razor 和 MVC 是分开的,但我的目标是在正常的 ASP.Net 管道内外使用相同的 MVC Razor 模板。 NuGet 上的版本不包含名为 MvcTemplateBase 的类。 Git 上的最新版本可以,但它不是通用的——它只是 MvcTemplateBase。如果我添加像 @inherits RazorEngine.Razor.MvcTemplateBase 这样的行,我会在 TemplateService.SetModelExplicit 中得到一个异常,抱怨模板类型没有名为 Model 的属性。想法?
标签: layout razor html-helper razorengine