1

我的模板如下所示:

@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 调用上得到一个空异常,即使输入不为空,“原始”和提供的模型都已初始化并具有值。

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

4

1 回答 1

1

The MvcTemplateBase<T> type is not yet developed, and the version you are currently using is a very early unfinished version.

I would question why you are trying to run a RazorEngine template within an MVC Razor view?

于 2012-01-21T16:33:57.550 回答