我得从的NuGet剃刀引擎的V2版本。 我想使用它的API来编译上即时剃刀意见。 然而,这似乎是完全无证件。
每一个类型,成员有下列文件:
此类型/成员支持.NET Framework基础结构,不适合直接在代码中使用。
这是很让人讨厌,因为这些都是公共类型和公共成员。
我已经看到了一些第三方的东西,这确实编译使用这个库剃刀意见,所以我知道任务应该是可行的了。
那么,有没有对如何在任何地方使用这个API的任何实际可用的文档?
我得从的NuGet剃刀引擎的V2版本。 我想使用它的API来编译上即时剃刀意见。 然而,这似乎是完全无证件。
每一个类型,成员有下列文件:
此类型/成员支持.NET Framework基础结构,不适合直接在代码中使用。
这是很让人讨厌,因为这些都是公共类型和公共成员。
我已经看到了一些第三方的东西,这确实编译使用这个库剃刀意见,所以我知道任务应该是可行的了。
那么,有没有对如何在任何地方使用这个API的任何实际可用的文档?
我离开了这个问题开了近一年没有答案,所以我决定发布什么,我想出了最后。
这是很清楚的是剃刀还是无证,看到http://msdn.microsoft.com/en-us/library/system.web.razor%28v=vs.111%29.aspx ,我认为这是非常有可能仍然无证。
但是,如何使用它可以通过查看的ASP.NET MVC如何使用它在它的Razor视图引擎的代码很容易确定。 然后,您可以基于该写代码。
看来,剃刀也关系到了ASP.NET BuildManager
基础设施,所以你可以很容易地得到一个剃须刀的实例,通过这一观点。 然后,你正在寻找调用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;
}
}