我想在转发器中简单地绑定一个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控件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top