我最大的问题是,当我拥有一个可以为空的属性时,即使值是null
,我也想检查一下是否已设置
在MyComponent
内部,我要区别的是这两种情况
传递Foo
属性
<MyComponent Foo="@foo" />
@code {
public Foo foo { get; set; }
}
不传递Foo
属性
<MyComponent />
但是在两种情况下,在MyComponent
中,Foo
将是null
。
即使值是Foo
的值,我怎么知道正在传递default
属性?
答案 0 :(得分:3)
您可以重写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);
}
}
答案 1 :(得分:-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;
}
}
}