ASP.NETリピーターC#内のHTMLラジオボタン
-
10-07-2019 - |
質問
リピーター内で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コントロールを使用できます。
所属していません StackOverflow