c# - 获取一组 HtmlInputRadioButton 控件的选中值

标签 c# asp.net webforms

使用 RadioButtonList 时控件,我可以使用以下代码访问我的代码隐藏中的选定值:

rbMyButtons.SelectedValue

但是,我想使用 HtmlInputRadioButton控件,因为这些让我可以更好地控制呈现的标记。如果我使用 <input type="radio" runat="server" /> 的列表然后,据我所知,我必须做这样的事情:

if (rbMyButtonsOption1.Checked)
{
    ...
}
else if (rbMyButtonsOption2.Checked)
{
    ...
}
else if ...

有什么方法可以模仿 RadioButtonList.SelectedValue 的行为吗? 使用Request.Form["name"]

最佳答案

这是我的做法:

首先,将 Html 控件包装在面板或类似的分组对象中(面板将呈现为 div):

<asp:Panel runat="server" ID="ButtonList" ClientIDMode="Static">
   <input type="radio" name="seasons" value="Spring" runat="server" />Spring <br/>
   <input type="radio" name="seasons" value="Summer" runat="server" /> Summer <br/>
   <input type="radio" name="seasons" value="Fall" runat="server" /> Fall <br/>
   <input type="radio" name="seasons" value="Winter" runat="server" /> Winter <br/>
</asp:Panel>

然后,创建一个扩展方法来访问面板的 ControlCollection 属性并遍历集合:

public static class HelperFunctions
{
    public static string GetRadioButtonValue(this ControlCollection collection)
    {
        foreach (var control in collection)
        {
            if (control is HtmlInputRadioButton)
            {
                var radioControl = ((HtmlInputRadioButton)control);
                if (radioControl.Checked)
                {
                    return radioControl.Value;
                }
            }
        }

        //If no item has been clicked or no Input Radio controls are present we return an empty string
        return String.Empty;
    }
}

终于可以轻松获取到值了:

var selectedValue = ButtonList.Controls.GetRadioButtonValue();

关于c# - 获取一组 HtmlInputRadioButton 控件的选中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17295638/

相关文章:

c# - arraylist 的顺序在 C#.NET 中得到保证吗?

C# .NET - 带定时器的缓冲消息

php - 使用 PayPal 和 PHP 进行交易

javascript - IE 中的页面加载时,动画 gif 不会显示动画

asp.net - 向 Asp.NET 中的选项预检请求添加 'access-control-allow-origin' 响应

c# - UserControl 中的 LinkBut​​ton 回发但不触发 OnClick

javascript - 如何进行回发并从该回发中的 html 中获取值(value)

C# 将 JSON 反序列化为对象

c# - 从类实例定义默认数组值

.net - 使用 .net 缓存提供程序类在数据库中的 Web 服务器上缓存数据库查询结果