不能在razorenengine中使用MvcHtmlString/IHtmlString

本文关键字:MvcHtmlString IHtmlString razorenengine 不能 | 更新日期: 2023-09-27 18:18:28

我刚开始使用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.Web, System.Web.Mvc, System.Web.WebPages的引用。还尝试将它们添加到cshtml (@using System.Web, @using System.Web.Mvc)。但是@using System.Web.Mvc.Mvc中的结果在System.Web中是不可用的?!

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

不能在razorenengine中使用MvcHtmlString/IHtmlString

razerengine有一个CompilerServicesUtility类。它负责在编译视图时加载程序集并使其可用。默认情况下,它返回当前AppDomain中加载的所有程序集。

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

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

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