この質問は、ほぼ 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;
}
}