ASP.NET转发器C#中的HTML单选按钮

时间:2009-11-30 16:25:36

标签: html button radio-button repeater

我想在转发器中简单地绑定一个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”,有人可以指导我做错了吗?

2 个答案:

答案 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控件。