Blazor: как связать объект Nullable с <select>? - PullRequest
3 голосов
/ 03 марта 2020

Я хочу использовать <select>, чтобы иметь возможность выбирать между несколькими значениями, или не выбирать ни одного.

Мой компонент такой:

<select @bind="SelectedValue">
    <option value="null">Null</option>
    @for (int i = 0; i < 10; i++)
    {
        <option value="@i">Value : @i </option>
    }
</select>

<hr />
    @if (SelectedValue.HasValue)
    {
        <p>The selected value is : @SelectedValue.Value</p>
    }
    else
    {
        <p>the value is null</p>
    }

@code {
    private int? SelectedValue = null;
}

Я могу связать * Значение 1007 * для объекта int, но я не могу связать значение null. Должен ли я использовать специальный синтаксис или он просто не поддерживается?

Ответы [ 2 ]

1 голос
/ 03 марта 2020
private string SelectedValue;

private void SelectionChanged(ChangeEventArgs args)
{
    if (args.Value is { })
    {
        SelectedValue = $"The selected value is :{args.Value}";
    }
    else
    {
        SelectedValue = "the value is null";
    }
}
<select @onchange="SelectionChanged">
    <option value="null">Null</option>
    @for (int i = 0; i < 10; i++)
    {
        <option value="@i">Value : @i </option>
    }
</select>

<hr />
<p>@SelectedValue</p>
1 голос
/ 03 марта 2020

Почему бы вам просто не использовать -1 вместо нуля?

<select @bind="SelectedValue">
    <option value="-1">Null</option>
    @for (int i = 0; i < 10; i++)
    {
        <option value="@i">Value : @i </option>
    }
    </select>
<hr />
@if (SelectedValue>-1)
{
    <p>The selected value is : @SelectedValue.Value</p>
}
else
{
    <p>the value is null</p>
}

@code {
    private int? SelectedValue = -1;
}
...