Estou criando um formulário no Blazor e gostaria de ter um segmento como o exemplo a seguir
Usando Bootstrap , tenho esse código para isso
<div class="btn-group" role="group" aria-label="Basic radio toggle button group">
<input type="radio" id="btnradio1-@Id" class="btn-check" name="btnradio1-@Id"
autocomplete="off" checked @bind-value="Value">
<label class="form-label btn btn-outline-primary" for="btnradio1-@Id">
Yes</label>
<input type="radio" id="btnradio2-@Id" class="btn-check" name="btnradio2-@Id"
autocomplete="off" @bind-value="Value">
<label class="form-label btn btn-outline-primary" for="btnradio2-@Id">
No</label>
<input type="radio" id="btnradio3-@Id" class="btn-check" name="btnradio3-@Id"
autocomplete="off" @bind-value="Value">
<label class="form-label btn btn-outline-primary" for="btnradio3-@Id">
Sometimes</label>
</div>
e no código, tenho este parâmetro :
[Parameter] public string Id { get; set; } = Guid.NewGuid().ToString();
[Parameter] public string? Value { get; set; }
Quando clico em uma entrada , quero alterar o Valor com o valor correspondente da entrada em que cliquei. Por exemplo, se eu clicar em Não , quero que o Valor seja Não .
Usar botões de rádio HTML para fazer isso é um pouco problemático. Descobri que é mais fácil construir um
InputBase
componente personalizado usando o Bootstrap ButtonGroup com botões normais.Aqui está uma versão simples:
O objeto de opção:
E uma página de demonstração: