Как проверить, установлено ли свойство в Blazor? - PullRequest
2 голосов
/ 13 апреля 2020

Моя самая большая проблема здесь, когда у меня есть свойство, которое может быть обнуляемым, но я хочу проверить, было ли оно установлено, даже если значение равно null

Внутри MyComponent И что я хочу отличить это два случая

Передача Foo свойство

<MyComponent Foo="@foo" />

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

Не проходящее Foo свойство

<MyComponent  />

Но внутри MyComponent, в обоих случаях Foo будет null.

Как узнать, что передается свойство Foo, даже если это значение default?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2020

Вы можете переопределить метод SetParametersAsyn c, чтобы проверить параметры, которые установлены или нет. Даже если значение равно нулю. Если параметр не указан, он не будет присутствовать в коллекции.

Например,

@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://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.componentbase.setparametersasync?view=aspnetcore-3.1

0 голосов
/ 13 апреля 2020
<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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...