Botão de rádio HTML dentro ASP.NET repetidor C #
-
10-07-2019 - |
Pergunta
Eu estou tentando simplesmente ligam um botão de opção de entrada HTML dentro de um repetidor:
<asp:Repeater ID="Outlets" runat="server" >
<ItemTemplate>
<input type="radio" name="Proposal" value="Test1" id="Radio1" checked="
<%#`GetSelectedValue(DataBinder.Eval(Container.DataItem,"IsDefaultSelection"))%>" />`
<label for="Test1">
<%#DataBinder.Eval(Container.DataItem, "Label")%>
</label>
</ItemTemplate>
</asp:Repeater>
O método GetSelectedValue simplesmente retorna um string "marcada" para o botão de rádio para ser selecionado, digamos que o repetidor teve 3 itens para loop e quando a marcação torna e se eu inspecionar o elemento que eu veja o valor correto para a primeira rádio botão ou seja verificada = "verificado", mas na UI o botão 3ª rádio é selecionado, embora o seu valor verificado =, guia alguém "false" pode me sobre o que eu estou fazendo errado?
Solução
Tentar dar um presente
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
Basicamente, a inclusão no atributo checked
está causando o RadioButton
a ser verificado. Você quer retirá-lo de modo a coisa toda é processado ou a coisa toda está ausente.
Também tenha em mente todas as suas RadioButtons
vão ser chamado Test1
Pode ser uma boa idéia usar um RadioButton
lado do servidor.
Outras dicas
O atributo check-in HTML não tem valor associado a ele. Você só deve usar este atributo se você quiser selecioná-lo.
Você quer algo como:
<asp:Repeater ID="Outlets" runat="server" >
<ItemTemplate>
<input type="radio" name="Proposal" value="Test1" id="Radio1" <%
if (GetSelectedValue(DataBinder.Eval(Container.DataItem,"IsDefaultSelection"))
response.write("CHECKED");
%> />
<label for="Test1">
<%#DataBinder.Eval(Container.DataItem, "Label")%>
</label>
</ItemTemplate>
</asp:Repeater>
Caso contrário, você pode simplesmente usar os controles de entrada ASP.NET.