不能在RazorEngine中使用MvcHtmlString / IHtmlString

时间:2013-06-14 09:31:27

标签: c# nunit razorengine

我刚刚开始使用RazorEngine并且在使用静态辅助方法时遇到了绊脚石。它只为模板生成一个MvcHtmlString / IHtmlString。当调用Razor.Parse(...)时,我得到了

RazorEngine.Templating.TemplateCompilationException : Unable to compile template. 
Der Typ 'System.Web.IHtmlString' ist in einer nicht referenzierten Assembly definiert. (not referenced)
Fügen Sie einen Verweis auf die Assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' hinzu.

我添加了对System.WebSystem.Web.MvcSystem.Web.WebPages的引用。还尝试将它们添加到 cshtml @using System.Web@using System.Web.Mvc)。 但@using System.Web.Mvc中没有.Mvc结果导致System.Web

我正在尝试在 NUnit 测试中构建模板。

2 个答案:

答案 0 :(得分:3)

RazorEngine有一个CompilerServicesUtility类。这负责在编译视图时加载和制作程序集。它默认返回当前AppDomain中加载的所有程序集。

对于查看代码的人来说,它有点不直观,但是确保Razor视图编译并且可以使用MvcHtmlString的一种方法是使用AppDomain将System.Web和System.Web.Mvc程序集加载到当前AppDomain中。在执行/编译视图之前,Current.Load("")。

答案 1 :(得分:0)

一个老问题。 @Gopal有正确的答案。除了添加以下代码外,我还必须将对System.Web的引用设置为复制本地。

AppDomain.CurrentDomain.Load("System.Web");