如何在Repeater项目中找到已检查的RadioButton?

Ale*_*yev 9 javascript asp.net repeater radio-button

我在ASPX页面上有一个Repeater控件,定义如下:

<asp:Repeater ID="answerVariantRepeater" runat="server"
    onitemdatabound="answerVariantRepeater_ItemDataBound">
    <ItemTemplate>
        <asp:RadioButton ID="answerVariantRadioButton" runat="server"
            GroupName="answerVariants" 
            Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"/>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

要允许只选择一个时间我已经用了一招形式单选按钮这篇文章.

但现在提交表单时,我想确定选中了哪个单选按钮.

我能做到这一点:

RadioButton checkedButton = null;

foreach (RepeaterItem item in answerVariantRepeater.Items)
{
    RadioButton control=(RadioButton)item.FindControl("answerVariantRadioButton");
    if (control.Checked)
    {
        checkedButton = control;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但希望它可以以某种方式简化(可能通过LINQ到对象).

Ian*_*ley 7

您可以随时使用Request.Form获取提交的单选按钮:

var value = Request.Form["answerVariants"];
Run Code Online (Sandbox Code Playgroud)

我认为提交的值默认为<asp:RadioButton />选中的id ,但是您总是可以添加一个值属性 - 即使它不是正式<asp:RadioButton />属性 - 然后这将是提交的值:

<asp:RadioButton ID="answerVariantRadioButton" runat="server"
    GroupName="answerVariants" 
    Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"
    value='<%# DataBinder.Eval(Container.DataItem, "SomethingToUseAsTheValue")%>' />
Run Code Online (Sandbox Code Playgroud)


Hec*_*Mac 2

Since You are using javascript already to handle the radio button click event on the client, you could update a hidden field with the selected value at the same time.

然后,您的服务器代码将仅访问隐藏字段中选定的值。