我正在开发 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 =”,因为我在某处看到了该代码。但这并没有解决问题;甚至不知道为什么两个版本都能正确编译,但这并不重要。
应该是
public Temp1(string? a, string? b)
{
this.a = a;
this.b = b;
}
this.a
指的是类内部的参数public string? a { get; set; }
。