ASP.NET转发器C#中的HTML单选按钮
-
10-07-2019 - |
题
我想在转发器中简单地绑定一个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方法只返回一个字符串<!> quot; checked <!> quot;对于要选择的单选按钮,假设转发器有3个项目循环,当标记呈现时,如果我检查元素,我看到第一个单选按钮的正确值,即checked = <!> quot; checked <!> QUOT;但是在UI上第3个单选按钮被选中,即使它的选中值= <!> quot; false <!>“,有人可以指导我做错了吗?
解决方案
试一试
<%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
基本上,checked
属性的包含导致RadioButton
被检查。你想把它拉出来,以便渲染整个东西或者整个东西都没有。
还要记住所有RadioButtons
将被命名为Test1
使用服务器端<=>可能是个好主意。
其他提示
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控件。
不隶属于 StackOverflow