private RazorEngine GetRazorEngine() { var razorEngine = RazorEngine.Create(builder => { InjectDirective.Register(builder); ModelDirective.Register(builder); NamespaceDirective.Register(builder); PageDirective.Register(builder); FunctionsDirective.Register(builder); InheritsDirective.Register(builder); SectionDirective.Register(builder); ////builder.AddTargetExtension(new TemplateTargetExtension() ////{ //// TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult", ////}); ////builder.Features.Add(new SuppressChecksumOptionsFeature()); builder.Features.Add(new ModelExpressionPass()); builder.Features.Add(new PagesPropertyInjectionPass()); builder.Features.Add(new ViewComponentTagHelperPass()); builder.Features.Add(new RazorPageDocumentClassifierPass()); builder.Features.Add(new MvcViewDocumentClassifierPass2(RuntimeTemplatesNamespace, BaseViewName)); builder.Features.Add(new AssemblyAttributeInjectionPass2()); if (!builder.DesignTime) { //builder.Features.Add(new InstrumentationPass()); } }); return(razorEngine); }
public static void Register(IRazorEngineBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } EnsureDesignTime(builder); InjectDirective.Register(builder); ModelDirective.Register(builder); FunctionsDirective.Register(builder); InheritsDirective.Register(builder); builder.Features.Add(new DefaultTagHelperDescriptorProvider()); // Register section directive with the 1.x compatible target extension. builder.AddDirective(SectionDirective.Directive); builder.Features.Add(new SectionDirectivePass()); builder.AddTargetExtension(new LegacySectionTargetExtension()); builder.AddTargetExtension(new TemplateTargetExtension() { TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult", }); builder.Features.Add(new ModelExpressionPass()); builder.Features.Add(new MvcViewDocumentClassifierPass()); }
public static void Register(RazorProjectEngineBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } InjectDirective.Register(builder); ModelDirective.Register(builder); InheritsDirective.Register(builder); builder.Features.Add(new DefaultTagHelperDescriptorProvider()); // Register section directive with the 1.x compatible target extension. builder.AddDirective(SectionDirective.Directive); builder.Features.Add(new SectionDirectivePass()); builder.AddTargetExtension(new LegacySectionTargetExtension()); builder.AddTargetExtension(new TemplateTargetExtension() { TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult", }); builder.Features.Add(new ModelExpressionPass()); builder.Features.Add(new MvcViewDocumentClassifierPass()); builder.Features.Add(new MvcImportProjectFeature()); // The default C# language version for what this Razor configuration supports. builder.SetCSharpLanguageVersion(LanguageVersion.CSharp7_3); }
public static void Register(RazorProjectEngineBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } InjectDirective.Register(builder); ModelDirective.Register(builder); PageDirective.Register(builder); SectionDirective.Register(builder); builder.Features.Add(new DefaultTagHelperDescriptorProvider()); builder.Features.Add(new ViewComponentTagHelperDescriptorProvider()); builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension()); builder.AddTargetExtension(new TemplateTargetExtension() { TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult", }); builder.Features.Add(new ModelExpressionPass()); builder.Features.Add(new PagesPropertyInjectionPass()); builder.Features.Add(new ViewComponentTagHelperPass()); builder.Features.Add(new RazorPageDocumentClassifierPass(builder.Configuration.UseConsolidatedMvcViews)); builder.Features.Add(new MvcViewDocumentClassifierPass(builder.Configuration.UseConsolidatedMvcViews)); builder.Features.Add(new MvcImportProjectFeature()); // The default C# language version for what this Razor configuration supports. builder.SetCSharpLanguageVersion(LanguageVersion.CSharp8); if (builder.Configuration.LanguageVersion.CompareTo(RazorLanguageVersion.Version_6_0) >= 0) { builder.Features.Add(new CreateNewOnMetadataUpdateAttributePass()); } }
public static void Register(RazorProjectEngineBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } FunctionsDirective.Register(builder); InjectDirective.Register(builder); ModelDirective.Register(builder); NamespaceDirective.Register(builder); PageDirective.Register(builder); InheritsDirective.Register(builder); SectionDirective.Register(builder); builder.Features.Add(new DefaultTagHelperDescriptorProvider()); builder.Features.Add(new ViewComponentTagHelperDescriptorProvider()); builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension()); builder.AddTargetExtension(new TemplateTargetExtension() { TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult", }); builder.Features.Add(new ModelExpressionPass()); builder.Features.Add(new PagesPropertyInjectionPass()); builder.Features.Add(new ViewComponentTagHelperPass()); builder.Features.Add(new RazorPageDocumentClassifierPass()); builder.Features.Add(new MvcViewDocumentClassifierPass()); builder.Features.Add(new AssemblyAttributeInjectionPass()); builder.Features.Add(new InstrumentationPass()); builder.Features.Add(new MvcImportProjectFeature()); // The default C# language version for what this Razor configuration supports. builder.SetCSharpLanguageVersion(LanguageVersion.CSharp7_3); }
private RazorPageData Parse(ISource source, IEnumerable <Lexeme> lexemes, string sourceName, string sourceChecksum) { RazorPageData pageData = new RazorPageData() { SourceName = sourceName, SourceChecksum = sourceChecksum, }; foreach (Lexeme lex in lexemes) { switch (lex.Rule) { case CSharpBlock cs when cs.Type == CSharpType.Expression || cs.Type == CSharpType.Statement || cs.Type == CSharpType.Comment: pageData.Content.Add(this.CreateCodeFragment(source, lex.Span, sourceName, cs.Type)); break; case CSharpBlock cs when cs.RazorType == RazorType.Model: pageData.Model = this.CreateFragment(source, lex.Span, sourceName); break; case CSharpBlock cs when cs.RazorType == RazorType.Result: pageData.Result = this.CreateFragment(source, lex.Span, sourceName); break; case CSharpBlock cs when cs.RazorType == RazorType.Import: pageData.Imports.Add(this.CreateFragment(source, lex.Span, sourceName)); break; case CSharpBlock cs when cs.RazorType == RazorType.Injection || cs.RazorType == RazorType.Projection: { Token[] arguments = lex.Tokens.Where(t => t.Symbol is Argument).ToArray(); InjectDirective directive = new InjectDirective(); if (arguments.Length == 1) { directive.Type = this.CreateFragment(source, arguments[0].Span, sourceName); } else if (arguments.Length > 1) { directive.Type = this.CreateFragment(source, arguments[0].Span, sourceName); directive.Variable = this.CreateFragment(source, arguments[1].Span, sourceName); } if (cs.RazorType == RazorType.Injection) { pageData.Injections.Add(directive); } else { pageData.Projections.Add(directive); } } break; case CSharpBlock cs when cs.RazorType == RazorType.Template: pageData.Template = this.CreateFragment(source, lex.Span, sourceName); break; case CSharpBlock cs when cs.RazorType == RazorType.Namespace: pageData.Namespace = this.CreateFragment(source, lex.Span, sourceName); break; case CSharpBlock cs when cs.RazorType == RazorType.Class: pageData.Class = this.CreateFragment(source, lex.Span, sourceName); break; case SqlBlock sql: pageData.Content.Add(this.CreateSqlFragment(source, lex, sourceName)); break; } } return(pageData); }