无法将类参数传递给 Blazor RenderFragment

问题描述 投票:0回答:1

我正在开发 Blazor WebApp、.net 8.0、仅服务器应用程序。我在 RenderFragment 方面遇到问题。

这是我作为参数传递给 RenderFragment 委托的类型:

public class Temp1
{
    public string? a { get; set; }
    public string? b { get; set; }

    public Temp1 (string? a, string? b)
    {
        a = this.a;
        b = this.b;
    }
}

这是 RenderFragment 定义:

public RenderFragment<Temp1> CreateButton => content => __builder => 
{
<button class="btn" onclick="@MenuOperations.CanvasMouseClick"> Button </button>
<button class="btn"> @content.a  aaa</button>
<button class="btn" onclick="@MenuOperations.CanvasMouseClick"> @content.b  bbb</button>
};  

这就是我所说的:

@CreateButton(new("x", "y"))    

问题是,当“CreateButton”执行时,“content”为空,但我使用 VS 2022 没有看到任何错误。

有人知道为什么内容为空吗?

这是我用来创建代码的示例。它有效。

public RenderFragment<string> SayHelloName => name => __builder =>
{
    <h1>Hello @name</h1>
};


@SayHelloName("foo")

我在其他地方看到了使用类类型而不是字符串类型的示例,所以我不知道为什么这会成为问题。

我尝试将“CreateButton =>”替换为“CreateButton =”,因为我在某处看到了该代码。但这并没有解决问题;甚至不知道为什么两个版本都能正确编译,但这并不重要。

asp.net-core blazor
1个回答
0
投票

应该是

        public Temp1(string? a, string? b)
        {
            this.a = a;
            this.b = b;
        }

this.a
指的是类内部的参数
public string? a { get; set; }

© www.soinside.com 2019 - 2024. All rights reserved.