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メソッドを実装で定義しなかったため。

入力がnullでなくても、Razor.Parse呼び出しでnull例外が発生します。「raw」と提供されたモデルの両方が初期化され、値があります。

例のマイナーコーディングエラーを修正するために編集されました。

4

1 に答える 1

1

MvcTemplateBase<T>タイプはまだ開発されておらず、現在使用しているバージョンは非常に初期の未完成バージョンです。

なぜ MVC Razor ビュー内で RazorEngine テンプレートを実行しようとしているのですか?

于 2012-01-21T16:33:57.550 に答える