我的模板看起来像这样:
@using RazorEngine;
@model System.String
@{
var content = @"<div id=""text-block-container"">
@Html.Raw(""<h1>test</h2>"")
</div>";
Razor.SetTemplateBase(typeof(MvcTemplateBase<>));
var output = Razor.Parse<MyType>(content, new MyType() );
}
<div>
@Html.Raw(output)
</div>
MvcTemplateBase看起来像:
public abstract class MvcTemplateBase<T> : TemplateBase<T> {
public HtmlHelper<object> Html { get; private set; }
public UrlHelper Url { get; private set; }
public void InitHelpers() {
var httpContext = new HttpContextWrapper(HttpContext.Current);
var handler = httpContext.CurrentHandler as MvcHandler;
if (handler == null)
throw new InvalidOperationException("Unable to run template outside of ASP.NET MVC");
}
编辑标题:我弄清楚导致“清除”未定义错误的原因。我已经定义了自己的TemplateBase版本,这是被命名为此的版本。由于我没有在我的实现中定义导致错误的Clear方法。
现在我在Razor.Parse调用上得到一个null异常,即使输入不为null,'raw'和提供的模型都被初始化并且有值。
编辑以纠正示例中的次要编码错误。
答案 0 :(得分:1)
MvcTemplateBase<T>
类型尚未开发,您当前使用的版本是一个非常早期的未完成版本。
我会问你为什么试图在MVC Razor视图中运行RazorEngine模板?