Продолжаем разбираться с компонентами ввода для форм в Blazor. Сегодня рассмотрим следующие три компонента — InputSelect и InputRadio, InputTextArea.
Компонент InputSelect
Компонент списка выбора. Как и его «предок» из html, этот компонент должен содержать один или несколько элементов <option>. Например, доработаем нашу форму из этой статьи и сделаем возможность выбора пола человека:
<EditForm Model="person">
....
<label for="gender">
Пол
<InputSelect @bind-Value=person.Gender id="gender">
<option value="Unknown">Неизвестно</option>
<option value="Male">Мужской</option>
<option value="Female">Женский</option>
</InputSelect>
</label>
....
</EditForm>
@code
{
public class PersonModel
{
....
public Gender Gender { get; set; }
}
PersonModel person = new PersonModel();
public enum Gender
{
Unknown,
Male,
Female
}
}
Здесь мы связали компонент InputSelect со свойством объекта Gender, которое имеет тип перечисления (enum). В работающем приложении мы увидим следующее:
Здесь стоит обратить внимание на элементы <option> — в атрибут value следует записывать значение из перечисления. Так, если бы мы создали такой элемент <option>:
option value="Male Female">Мужской</option>
то Visual Studio не показала бы нам никакой ошибки, однако при отправке такая форма не прошла бы валидацию:
так как в Value записано неверное значение.
Компоненты InputRadio и InputRadioGroup
Компоненты списка переключателей для одиночного выбора. Компоненты InputRadio должны обязательно находиться внутри группы — InputRadioGroup. Например, перепишем предыдущий пример с выбором пола, используя переключатели:
<InputRadioGroup @bind-Value="person.Gender">
<InputRadio Value="Gender.Unknown"/>Неизвестно<br/>
<InputRadio Value="Gender.Male"/>Мужской<br/>
<InputRadio Value="Gender.Female"/>Женский<br/>
</InputRadioGroup>
Теперь запустим приложение и убедимся, что выбор работает и при выборе определенного RabioButton автоматически переключается и созданный ранее список выбора:
Компонент InputTextArea
Как и рассмотренный ранее компонент InputText, этот компонент используется для ввода текста, но, в отличие от InputText, представляет собой многострочный редактор. Пример использования:
...
<InputTextArea @bind-Value="person.Report"></InputTextArea>
...
@code
{
public class PersonModel
{
...
public string Report { get; set; } = "Текст \r\n на несколько \r\n строк";
}
...
}
В запущенном приложении этот компонент будет содержать три строки:
Итого
Итак, мы рассмотрели основные компоненты для ввода данных в формах Blazor: InputText, InputNumber, InputCheckbox, InputDate, InputSelect, InputRadio, InputRadioGroup и InputTextArea. Все эти компоненты должны располагаться внутри компонента формы — EditForm и позволяют использовать атрибуты модели для валидации данных формы. В следующей статье разберемся с тем, как настроить внешний вид списка об ошибках в форме.



