質問

リピーター内で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メソッドは、単に文字列&quot; checked&quot;を返します。ラジオボタンを選択するために、リピータにループする3つのアイテムがあり、マークアップがレンダリングされ、要素を検査すると、最初のラジオボタンの正しい値が表示されるとしましょう。つまり、checked =&quot; checked&quot;しかし、UIで、チェックされた値=「false」であるにもかかわらず、3番目のラジオボタンが選択された場合、誰かが私が間違っていることを教えてくれますか?

役に立ちましたか?

解決

これを試してください

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

基本的に、 checked 属性に含めると、 RadioButton がチェックされます。引き出して、全体がレンダリングされるか、全体が存在しないようにします。

また、すべての RadioButtons の名前は Test1 になることに注意してください。サーバー側の RadioButton を使用することをお勧めします。

他のヒント

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