我的模板如下所示:
@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 调用上得到一个空异常,即使输入不为空,“原始”和提供的模型都已初始化并具有值。
编辑以纠正示例中的小编码错误。