我想在转发器中简单地绑定一个HTML Input单选按钮:
<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方法只返回一个字符串“checked”,用于选择单选按钮,假设转发器有3个项目循环,当标记呈现时,如果我检查元素,我看到第一个无线电的正确值按钮ie checked =“checked”但是在UI上第三个单选按钮被选中,即使它的选中值=“false”,有人可以指导我做错了吗?
答案 0 :(得分:4)
试一试
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
基本上,checked
属性的包含会导致RadioButton
被检查。你想把它拉出来,以便渲染整个东西或者整个东西都没有。
另请注意,您的所有RadioButtons
都将被命名为Test1
。使用服务器端RadioButton
可能是个好主意。
答案 1 :(得分:0)
HTML中的CHECKED属性没有与之关联的值。如果要选择它,则只应使用此属性。
你想要这样的东西:
<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控件。