RazorEngine v2.1在Razor.Parse上抛出“Object is null”异常

时间:2012-01-20 18:10:27

标签: razorengine

我的模板看起来像这样:

@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'和提供的模型都被初始化并且有值。

编辑以纠正示例中的次要编码错误。

1 个答案:

答案 0 :(得分:1)

MvcTemplateBase<T>类型尚未开发,您当前使用的版本是一个非常早期的未完成版本。

我会问你为什么试图在MVC Razor视图中运行RazorEngine模板?