c# - 如何检查是否已在 Blazor 中设置属性?

标签 c# blazor

我最大的问题是当我有一个可以为 null 的属性时,但我想检查它是否已设置,即使值为 null

MyComponent 里面,我想要区别的是这两种情况

传递 Foo 属性

<MyComponent Foo="@foo" />

@code {
    public Foo foo { get; set; }
}

不传递 Foo 属性

<MyComponent  />

但是在 MyComponent 中,在这两种情况下,Foo 都将为 null

即使值是 default 值,我怎么知道正在传递 Foo 属性?

最佳答案

您可以覆盖 SetParametersAsync 方法来检查已设置或未设置的参数。即使值为空。 如果未指定参数,它将不会出现在集合中。

例如

@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

关于c# - 如何检查是否已在 Blazor 中设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61193847/

相关文章:

c# - 为什么将项目添加到解决方案而不是文件夹?

c# - 如何在我的 Winforms 应用程序中打印显示的表单?

Blazor WASM - 构建错误 - "Static web asset has a conflicting web root path"

Blazor UriHelper.NavigateTo 两次调用页面

async-await - Blazor(服务器)和异步/等待模式

c# - 新版本的 Automapper 在定义子类型映射时抛出强制转换异常

c# - MySQL Entity Framework - 当多个元素作为参数传递时,Contains 方法会引发异常

c# - 通知 WPF DataGrid 更改

c# - MudBlazor 上的通用选择

port - 如何更改已发布的 Blazor Server 项目的端口?