从Razor生成C#(jlazor)

发布于 2025-02-07 11:20:13 字数 1121 浏览 2 评论 0原文

我试图使用软件包示例代码从代码生成G.CS

    <PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.5" />

,以将Razor编译为CS:

        var engine = RazorProjectEngine.Create(RazorConfiguration.Default, RazorProjectFileSystem.Create(pathWhereCsProjLives));
        var file = engine.FileSystem.GetItem("/pages/Counter2.razor");
        var document = engine.Process(file).GetCSharpDocument();
        var generatedCode = document.GeneratedCode;

它无法正常工作。为了实现,将生成这样的按钮:

__builder.AddMarkupContent(5, "<button class=\"btn btn-primary\" @onclick=\"IncrementCount\">Click me</button>");

应该是这样的:

        __builder.OpenElement(5, "button");
        __builder.AddAttribute(6, "class", "btn btn-primary");
        __builder.AddAttribute(7, "onclick", Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this, IncrementCount
        ));
        __builder.AddContent(8, "Click me");
        __builder.CloseElement();
    }

Im trying to generate the g.cs from code using package

    <PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.5" />

Sample code to compile razor into cs:

        var engine = RazorProjectEngine.Create(RazorConfiguration.Default, RazorProjectFileSystem.Create(pathWhereCsProjLives));
        var file = engine.FileSystem.GetItem("/pages/Counter2.razor");
        var document = engine.Process(file).GetCSharpDocument();
        var generatedCode = document.GeneratedCode;

It does not work properly. For intance a button will be generated like this:

__builder.AddMarkupContent(5, "<button class=\"btn btn-primary\" @onclick=\"IncrementCount\">Click me</button>");

Should be something like:

        __builder.OpenElement(5, "button");
        __builder.AddAttribute(6, "class", "btn btn-primary");
        __builder.AddAttribute(7, "onclick", Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this, IncrementCount
        ));
        __builder.AddContent(8, "Click me");
        __builder.CloseElement();
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞美少年 2025-02-14 11:20:13

我尝试了另一种

<button class="btn btn-primary" onclick=@OnClickFunc> ClickMe </button>

生成的

        __builder.CloseElement();
        __builder.AddMarkupContent(5, "\n");
        __builder.OpenElement(6, "button");
        __builder.AddAttribute(7, "class", "btn btn-primary");
        __builder.AddAttribute(8, "onclick", OnClickFunc);
        __builder.AddContent(9, " ClickMe ");
        __builder.CloseElement();
    }

    private void OnClickFunc() {
        Console.WriteLine("OnClick");
    }

语法,并且在这里运行良好。

使用
&lt; packagereference includs =“ microsoft.aspnetcore.razor.language”版本=“ 6.0.13” /&gt; < /code>

I have try another syntax

<button class="btn btn-primary" onclick=@OnClickFunc> ClickMe </button>

it generated

        __builder.CloseElement();
        __builder.AddMarkupContent(5, "\n");
        __builder.OpenElement(6, "button");
        __builder.AddAttribute(7, "class", "btn btn-primary");
        __builder.AddAttribute(8, "onclick", OnClickFunc);
        __builder.AddContent(9, " ClickMe ");
        __builder.CloseElement();
    }

    private void OnClickFunc() {
        Console.WriteLine("OnClick");
    }

and it works well here.

using
<PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.13" />

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文