示例#1
0
        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);
        }
示例#2
0
    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());
    }
示例#3
0
    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);
    }
示例#4
0
    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());
        }
    }
示例#5
0
    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);
    }
示例#6
0
        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);
        }