Blazor / dotnet 5.0.0: установить выбранное значение в InputSelect

#.net #blazor #placeholder #selected

#.net #blazor #.net-5 #плейсхолдер #выбрано

Вопрос:

Мне нужно установить выбранное значение в раскрывающемся списке в качестве заполнителя. С момента обновления до mcr.microsoft.com/dotnet/sdk:5.0 это больше не будет работать. Поле ввода просто пустое, и значение не выбрано. Он работал до обновления. Установка выбранного атрибута тоже не работает.

 <InputSelect @bind-Value="someValue" id="someValue" required>
    <option value="">some Text</option>
    @foreach (var someValue in someValues)
    {
        <option value="@someValue">@someValue</option>
    }
</InputSelect>
  

Спасибо за помощь!

Ответ №1:

Вам нужно убедиться, что ваша someValue внутренняя часть вашей модели допускает значение null. Здесь вы определяете

 <option value="">...
  

значение вашего параметра равно нулю или пустой строке. Если вы используете string в качестве типа данных, тогда все в порядке. Но если вы используете объект, подобный недавно добавленной поддержке System.Guid , тогда это должно допускать значения с нулевым значением.

Например:

 public Guid? someValue { get; set; } = null;
  

Использование Guid.Empty также возможно, если вы используете это

 <option value="@(System.Guid.Empty)">...
  

Но это зависит от ваших требований.

Ответ №2:

Представленный вами код отлично работает в rc2.

Примечание: я сделал предположения об EditForm использовании.

 <EditForm EditContext="SomeContext">

    <InputSelect @bind-Value="someValue" id="someValue" required>
        <option value="">some Text</option>
        @foreach (var someValue in someValues)
        {
        <option value="@someValue">@someValue</option>
        }
    </InputSelect>

</EditForm>

@someValue

@code {
    IEnumerable<string> someValues = new List<string> { "Value1", "Value2", "Value3" };
    EditContext SomeContext { get; set; }
    string someValue;

    SomeModel someModel = new SomeModel();
    protected override void OnInitialized()
    {
        SomeContext = new EditContext(someModel);
    }

    class SomeModel { }
}
  

Однако: вы везде используете «someValue». Мне нужно будет просмотреть больше вашего кода, чтобы найти ошибку. Если вы вставите это в нижнюю часть индексной страницы нежелательных / тестовых проектов, это сработает. EditForm Возможно, проблема в конфигурации / привязках.

Комментарии:

1. Ваш код работает. Спасибо за ответ! «некоторый текст» предварительно выбирается при загрузке страницы.