Кнопка-переключатель HTML внутри ретранслятора ASP.NET C #
-
10-07-2019 - |
Вопрос
Я пытаюсь просто привязать радиокнопку ввода HTML внутри ретранслятора:
<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>
Метод GetSelectedValue просто возвращает строку " флажок " для выбора переключателя, допустим, что ретранслятор имеет 3 элемента для цикла, и когда визуализация разметки отображается, и если я проверяю элемент, я вижу правильное значение для первой переключателя, т.е. но в пользовательском интерфейсе выбирается 3-й переключатель, хотя его проверенное значение = " false " ;, может ли кто-нибудь подсказать мне, что я делаю неправильно?
Решение
Попробуйте это
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
По сути, включение в атрибут checked
вызывает проверку RadioButton
. Вы хотите вытащить это так, чтобы вся вещь оказывалась или вся вещь отсутствовала. Р>
Также имейте в виду, что все ваши RadioButton
будут называться Test1
. Может быть, стоит использовать RadioButton
на стороне сервера. р>
Другие советы
Атрибут CHECKED в HTML не имеет значения, связанного с ним. Вы должны использовать этот атрибут, только если вы хотите выбрать его. Р>
Вы хотите что-то вроде:
<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>
В противном случае вы можете просто использовать элементы управления ASP.NET INPUT.