我最大的问题是当我有一个可以为null的属性,但我想检查它是否已设置,即使值是null
在MyComponent
内部,我想区别的是这两种情况
通过Foo
属性
<MyComponent Foo="@foo" />
@code {
public Foo foo { get; set; }
}
未通过Foo
属性
<MyComponent />
但在MyComponent
内部,在这两种情况下,Foo
都将是null
。
即使值是default
值,我如何知道正在传递Foo
属性?
您可以覆盖SetParametersAsync方法来检查是否设置了参数。即使该值为null。如果未指定参数,则该参数将不会出现在集合中。
例如
@code {
[Parameter]
public Foo Foo { get; set; }
public override async Task SetParametersAsync(ParameterView parameters)
{
foreach(var prm in parameters)
{
System.Diagnostics.Debug.WriteLine($"Name: {prm.Name}");
System.Diagnostics.Debug.WriteLine($"Value: {prm.Value?.ToString()}");
}
await base.SetParametersAsync(parameters);
}
}
文件:https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.componentbase.setparametersasync?view=aspnetcore-3.1
<h3>Component</h3>
@code {
private bool _setFromOutside;
private Foo _foo = new Foo(); //values set from inside of your component
[Parameter]
public Foo Foo
{
get => _foo;
set
{
_setFromOutside = true;
_foo = value;
}
}
}