System.Web.Razor的文档在哪里?(v2)



我从NuGet获得了Razor引擎的v2版本。我想使用它的API在-fly上编译Razor视图。然而,它似乎完全没有记录在案。

每种类型和成员都有以下文档:

此类型/成员支持.NET Framework基础结构,并且不打算直接从代码中使用。

这非常令人恼火,因为这些都是公众类型和公众成员
我已经看到一些第三方的东西使用这个库编译Razor视图,所以我知道这个任务也应该是可行的。

那么,关于如何在任何地方使用这个API,是否有任何实际可用的文档?

我把这个问题搁置了将近一年都没有答案,所以我决定最终发布我的想法。

很明显,Razor仍然没有证件http://msdn.microsoft.com/en-us/library/system.web.razor%28v=vs.111%29.aspx而且我认为它很可能仍然是非法的。

然而,通过查看ASP.NET MVC如何在其Razor视图引擎中使用它的代码,可以很容易地确定如何使用它。然后,您可以在此基础上编写代码。

Razor似乎还连接到ASP.NET BuildManager基础结构中,因此您可以通过它轻松地获得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;
    }
}

最新更新