1

NuGetからRazorエンジンのv2バージョンを入手しました。APIを使用してRazorビューをオンザフライでコンパイルしたいと思います。ただし、完全に文書化されていないようです。

すべてのタイプとメンバーには、次のドキュメントがあります。

このタイプ/メンバーは.NETFrameworkインフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

これらはすべてパブリックタイプであり、パブリックメンバーであるため、これは非常に苛立たしいことです。
このライブラリを使用してRazorビューをコンパイルするサードパーティのものを見たことがあります。そのため、このタスクも実行可能である必要があります。

それで、このAPIをどこでも使用する方法に関する実際に使用可能なドキュメントはありますか?

4

1 に答える 1

0

この質問は、ほぼ 1 年間答えが見つからないまま放置されていたので、最終的に思いついたことを投稿することにしました。

Razor がまだ文書化されていないことは明らかです。http://msdn.microsoft.com/en-us/library/system.web.razor%28v=vs.111%29.aspx を参照てください。文書化されていないままです。

ただし、その使用方法は、ASP.NET MVC が Razor ビュー エンジンで使用する方法のコードを見ることで簡単に判断できます。それに基づいてコードを書くことができます。

Razor は ASP.NETBuildManagerインフラストラクチャにも関連付けられているようです。そのため、Razor ビューのインスタンスを簡単に取得できます。次に、メソッドの呼び出しを探していますExecutePageHierarchy

コードは次のとおりです。

public void ProcessRequestCore(HttpContextBase context)
{
    try
    {
        // Create Razor page instance
        var instance = BuildManager.CreateInstanceFromVirtualPath(_razorFilePath, typeof(WebPage)) as WebPage;

        if (instance == null)
            throw new NullReferenceException("BuildManager.CreateInstanceFromVirtualPath returned null.");

        // Set up things
        instance.VirtualPath = _virtualPath;

        // Render the Razor page
        instance.ExecutePageHierarchy(new WebPageContext(context, instance, _model), context.Response.Output);
    }
    catch (Exception exc)
    {
        Logger.WriteException(exc);
        context.Response.StatusCode = 500;
    }
}
于 2013-07-12T16:56:56.957 に答える