Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net System.Web.Razor的文档在哪里?(v2)_Asp.net_.net_Razor_Compilation_Documentation - Fatal编程技术网

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

Asp.net System.Web.Razor的文档在哪里?(v2),asp.net,.net,razor,compilation,documentation,Asp.net,.net,Razor,Compilation,Documentation,我从NuGet那里得到了剃须刀引擎的v2版本。我想使用Razor的API动态编译Razor视图。然而,它似乎完全没有文档记录 每个类型和成员都有以下文档: 此类型/成员支持.NET Framework基础架构,并且 不打算直接从代码中使用 这非常令人恼火,因为这些都是公共类型和公共成员。 我见过一些第三方的东西使用这个库编译Razor视图,所以我知道这个任务也应该是可行的 那么,关于如何在任何地方使用这个API,是否有任何实际可用的文档呢?我把这个问题留了将近一年没有回答,所以我决定最终发布我的

我从NuGet那里得到了剃须刀引擎的v2版本。我想使用Razor的API动态编译Razor视图。然而,它似乎完全没有文档记录

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

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

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


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

我把这个问题留了将近一年没有回答,所以我决定最终发布我的想法

很明显,Razor仍然没有记录,我认为它很可能仍然没有记录

但是,通过查看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;
    }
}

+这一定是我见过的最不负责任的决定之一。我一直希望负责任的框架开发人员会考虑有用的API文档,这是关键的需求,在部署之前是必要的。看到一页又一页的MSDN被“herp-derp不打算直接使用herp-derp”污染,简直是侮辱。@Bracketworks是的,我完全同意!!!