【问题标题】:HTML Radio button inside ASP.NET repeater C#ASP.NET 中继器 C# 中的 HTML 单选按钮
【发布时间】:2010-12-21 16:57:26
【问题描述】:

我正在尝试在转发器内简单地绑定一个 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 个项目要循环,当标记呈现时,如果我检查元素,我会看到第一个单选按钮的正确值按钮,即checked="checked",但在UI 上第三个单选按钮被选中,即使它的checked value="false",有人可以指导我做错了什么吗?

【问题讨论】:

    标签: html button radio-button repeater


    【解决方案1】:

    试试这个

    <%# (bool)Eval("IsDefaultSelection") ? " checked=\"checked\" " : string.Empty %>
    

    基本上包含在checked 属性上会导致RadioButton 被检查。您想将其拉出,以便渲染整个事物或不存在整个事物。

    另外请记住,您的所有RadioButtons 都将被命名为Test1 使用服务器端RadioButton 可能是个好主意。

    【讨论】:

    • 太棒了,我担心我有语法错误,没有 Intellisense 的编码总是比较困难。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 2013-12-18
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2012-02-24
      • 2018-02-23
      相关资源
      最近更新 更多