HTML Radiobutton innerhalb ASP.NET Repeater C #
-
10-07-2019 - |
Frage
Ich versuche, einfach ein HTML-Eingabeoptionsfeld innerhalb eines Repeater zu binden:
<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>
Die GetSelectedValue Methode gibt einfach eine Zeichenfolge „geprüft“ für das Optionsfeld ausgewählt werden, können sagen, der Repeater 3 Elemente Schleife hatte und wenn das Markup macht und wenn ich das Element inspizieren sehe ich den richtigen Wert für den ersten Funk Taste dh checked = „checked“ aber auf der Benutzeroberfläche der dritten Radiobutton wird, obwohl sein geprüft value = „false“ ausgewählt, kann mir jemand führen, was ich falsch mache?
Lösung
Geben Sie diesem einen Versuch
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
Grundsätzlich ist die Aufnahme in dem checked
Attribute verursacht das RadioButton
zu prüfen. Sie wollen es herausziehen, so dass die ganze Sache gemacht wird oder die ganze Sache ist nicht gefunden.
Beachten Sie auch, alle Ihre RadioButtons
genannt werden Test1
werden Es könnte eine gute Idee sein, eine Server-Seite RadioButton
zu verwenden.
Andere Tipps
Das Attribut checked in HTML hat keinen Wert mit ihr verbunden ist. Sie sollten dieses Attribut nur verwenden, wenn Sie es auswählen möchten.
Sie wollen so etwas wie:
<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>
Sonst könnte man einfach den ASP.NET INPUT-Steuerelemente verwenden.