Значение, не привязанное к выбранной опции в меню выбора

#c# #razor #blazor

#c# #razor #blazor

Вопрос:

У меня есть <select> элемент управления на моей странице блейзора с 3 вариантами. Я устанавливаю selected опцию «Нести». Если пользователь не прикасается к <select> элементу управления, я хочу, чтобы привязанное значение было равно «Bear».

Однако я замечаю, что оно обновляет привязанное значение только к тому, что я выбираю, ПОСЛЕ обновления элемента <select> управления. Как мне заставить его принимать selected значение, когда <select> компонент никогда не затрагивается?

 <select @bind="selectedValue">
    <option value="Apple">Apple</option>
    <option selected="selected" value="Bear">Bear</option>
    <option value="John Cena">John Cena</option>
</select>

<h3>Selected Value: @selectedValue</h3>

@code {

    string selectedValue;
}
  

В настоящее время существует скрипка Блейзора: https://blazorfiddle.com/s/d3flx9tc

Ответ №1:

Просто присвойте значение «Bear» selectedValue , как показано ниже:

 string selectedValue = "Bear";
  

И удалите атрибут selected="selected"

Теперь выбрано «Bear», а переменная selectedValue содержит строку «Bear». Вот как вы должны инициализировать свои элементы.

Кстати, вы должны использовать только selected without ="selected" . Это бессмысленно. Вы могли бы использовать selected="DoNotSelectMe" , и это все равно будет работать

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

1. Это надуманный пример для моего реального проекта. В моем проекте у меня есть список элементов <select> управления, которые по умолчанию имеют различные значения в зависимости от других значений. Таким образом, у вас может быть 3 выбора, которые по умолчанию равны «bear», и 2, которые по умолчанию равны «apple», и 5, которые по умолчанию равны «john cena». Я создаю эти select элементы управления в цикле. Думаю, я мог бы задать значение по умолчанию, как вы сказали, но я надеялся, что смогу сохранить этот код и просто попросить selected свойство сделать это за меня во время рендеринга пользовательского интерфейса. Похоже, мне нужно перевернуть мою логику.

2. Отлично. Вы задали вопрос… Я ответил на это. Нет проблем. Создайте новый вопрос, покажите, что вы сделали, и мы постараемся помочь.

3. Я инициализировал элемент, как вы предложили, и selected полностью удалил атрибут. Я не понимал, что selected это не нужно, когда переменная, привязанная к select уже имеет значение. Это работает отлично, и код намного чище. Спасибо за вашу помощь.