C# 获取一组HtmlInputRadioButton控件的选定值

C# 获取一组HtmlInputRadioButton控件的选定值,c#,asp.net,webforms,C#,Asp.net,Webforms,使用RadioButtonList控件时,我可以通过以下方式访问codebehind中的选定值: rbMyButtons.SelectedValue 但是,我希望使用HtmlInputRadioButton控件,因为这些控件使我能够更好地控制呈现的标记。如果我使用的是列表,那么据我所知,我必须这样做: if (rbMyButtonsOption1.Checked) { ... } else if (rbMyButtonsOption2.Checked) { ... } else

使用
RadioButtonList
控件时,我可以通过以下方式访问codebehind中的选定值:

rbMyButtons.SelectedValue
但是,我希望使用
HtmlInputRadioButton
控件,因为这些控件使我能够更好地控制呈现的标记。如果我使用的是
列表,那么据我所知,我必须这样做:

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

是否有一种方法可以模拟
RadioButtonList.SelectedValue的行为而不使用
Request.Form[“name”]

您可以使用LINQ模拟此行为:

var radioButtons = new[] { rbMyButtonsOption1, rbMyButtonsOption2 };
var checkedRadioButton = radioButtons.FirstOrDefault(i => i.Checked);
if (checkedRadioButton != null)
{
    // do something...
}

可以使用LINQ模拟此行为:

var radioButtons = new[] { rbMyButtonsOption1, rbMyButtonsOption2 };
var checkedRadioButton = radioButtons.FirstOrDefault(i => i.Checked);
if (checkedRadioButton != null)
{
    // do something...
}

我会这样做:

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

最后,您可以轻松获得该值:

var selectedValue = ButtonList.Controls.GetRadioButtonValue();

我会这样做:

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

最后,您可以轻松获得该值:

var selectedValue = ButtonList.Controls.GetRadioButtonValue();

我做了一些搜索来找到这个,所以我认为它可能是有用的,即使这个问题已经超过1年了

我刚刚遇到这个问题。我需要使用[input type=“radio”runat=“server”…],因为我必须在每个选择中包含额外的HTML“data-*”属性

我在这里使用了两个答案的组合来提供一个帮助我的解决方案

我的HTML看起来像:

<div id="pnlOpts" runat="server">
   <input type="radio" name="rblReason" runat="server" value="1" /> <label>Opt 1</label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="1" /> <label>Supplied Reason 1 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="2" /> <label>Supplied Reason 2 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="3" /> <label>Supplied Reason 3 </label><br />
</div>
if(pnlOpts.Controls.OfType<HtmlInputRadioButton>().Any(a=>a.Checked))
{
    HtmlInputRadioButton selected = pnlOpts.Controls.OfType<HtmlInputRadioButton>().Where(a => a.Checked).FirstOrDefault();
    var btnValue = selected.Value;
    var dataAttVal = selected.Attributes["data-att"];
    ...
}

选项1
提供原因1
提供原因2
提供原因3
我的代码如下所示:

<div id="pnlOpts" runat="server">
   <input type="radio" name="rblReason" runat="server" value="1" /> <label>Opt 1</label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="1" /> <label>Supplied Reason 1 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="2" /> <label>Supplied Reason 2 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="3" /> <label>Supplied Reason 3 </label><br />
</div>
if(pnlOpts.Controls.OfType<HtmlInputRadioButton>().Any(a=>a.Checked))
{
    HtmlInputRadioButton selected = pnlOpts.Controls.OfType<HtmlInputRadioButton>().Where(a => a.Checked).FirstOrDefault();
    var btnValue = selected.Value;
    var dataAttVal = selected.Attributes["data-att"];
    ...
}
if(pnlOpts.Controls.OfType().Any(a=>a.Checked))
{
HtmlInputRadioButton selected=pnlOpts.Controls.OfType()。其中(a=>a.Checked.FirstOrDefault();
var BTN值=所选的.Value;
var dataAttVal=selected.Attributes[“data att”];
...
}

我做了一些搜索来找到这个问题,所以我认为它可能有用,即使这个问题已经有一年多的历史了

我刚刚遇到这个问题。我需要使用[input type=“radio”runat=“server”…],因为我必须在每个选择中包含额外的HTML“data-*”属性

我在这里使用了两个答案的组合来提供一个帮助我的解决方案

我的HTML看起来像:

<div id="pnlOpts" runat="server">
   <input type="radio" name="rblReason" runat="server" value="1" /> <label>Opt 1</label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="1" /> <label>Supplied Reason 1 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="2" /> <label>Supplied Reason 2 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="3" /> <label>Supplied Reason 3 </label><br />
</div>
if(pnlOpts.Controls.OfType<HtmlInputRadioButton>().Any(a=>a.Checked))
{
    HtmlInputRadioButton selected = pnlOpts.Controls.OfType<HtmlInputRadioButton>().Where(a => a.Checked).FirstOrDefault();
    var btnValue = selected.Value;
    var dataAttVal = selected.Attributes["data-att"];
    ...
}

选项1
提供原因1
提供原因2
提供原因3
我的代码如下所示:

<div id="pnlOpts" runat="server">
   <input type="radio" name="rblReason" runat="server" value="1" /> <label>Opt 1</label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="1" /> <label>Supplied Reason 1 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="2" /> <label>Supplied Reason 2 </label><br />
   <input type="radio" name="rblReason" runat="server" value="3" data-att="3" /> <label>Supplied Reason 3 </label><br />
</div>
if(pnlOpts.Controls.OfType<HtmlInputRadioButton>().Any(a=>a.Checked))
{
    HtmlInputRadioButton selected = pnlOpts.Controls.OfType<HtmlInputRadioButton>().Where(a => a.Checked).FirstOrDefault();
    var btnValue = selected.Value;
    var dataAttVal = selected.Attributes["data-att"];
    ...
}
if(pnlOpts.Controls.OfType().Any(a=>a.Checked))
{
HtmlInputRadioButton selected=pnlOpts.Controls.OfType()。其中(a=>a.Checked.FirstOrDefault();
var BTN值=所选的.Value;
var dataAttVal=selected.Attributes[“data att”];
...
}

这正是我开始思考的方向。我可能会把面板换成一个占位符,但除此之外,谢谢你的回答。这与我开始思考的思路非常一致。我可能会把面板换成占位符,但除此之外,谢谢你的回答。