소스를 읽고 WebViewPage
으로 컴파일하는 RazorTemplateEngine
을 만들어 직접보기를 실행할 수 있습니다.
그런 다음 support the new @model
keyword에
webViewPage.OverridenLayoutPath = LayoutPath;
webViewPage.VirtualPath = ViewPath;
webViewPage.ViewContext = viewContext;
webViewPage.ViewData = viewContext.ViewData;
webViewPage.InitHelpers();
WebPageRenderingBase startPage = null;
if (RunViewStartPages) {
startPage = StartPageLookup(webViewPage, RazorViewEngine.ViewStartFileName, ViewStartFileExtensions);
}
webViewPage.ExecutePageHierarchy(new WebPageContext(context: viewContext.HttpContext, page: null, model: null), writer, startPage);
를 작성하여 WebViewPage
를 실행할 수 있습니다, 당신은 MVC의 사용자 정의 생성기 사용하도록 RazorEngineHost의 메소드 오버라이드 (override)해야합니다 :
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) {
if (incomingCodeGenerator is CSharpRazorCodeGenerator) {
return new MvcCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName,
incomingCodeGenerator.RootNamespaceName,
incomingCodeGenerator.SourceFileName,
incomingCodeGenerator.Host);
}
else if (incomingCodeGenerator is VBRazorCodeGenerator) {
return new MvcVBRazorCodeGenerator(incomingCodeGenerator.ClassName,
incomingCodeGenerator.RootNamespaceName,
incomingCodeGenerator.SourceFileName,
incomingCodeGenerator.Host);
}
return base.DecorateCodeGenerator(incomingCodeGenerator);
}
public override ParserBase DecorateCodeParser(ParserBase incomingCodeParser) {
if (incomingCodeParser is CSharpCodeParser) {
return new MvcCSharpRazorCodeParser();
}
else if (incomingCodeParser is VBCodeParser) {
return new MvcVBRazorCodeParser();
}
else {
return base.DecorateCodeParser(incomingCodeParser);
}
}
을