ASP.NET中RadioButton与Button的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET中RadioButton与Button的使用相关的知识,希望对你有一定的参考价值。
经常在注册是时候会发现有的用户协议,你点接收才能点击下一步,点拒绝则无法使用下一步按钮,我想问一下这个是怎么实现的?
参考技术A 楼上错了吧,这个应该是及时回送,把radiobutton人enableviewstate打开,然后当检测到用户点击按钮时在进行判断,如果为同意在把那个下一步的按钮显示出来 参考技术B RadioButton 里面有一个 Name 属性 比如你给name 赋值 等于 "接受"这时候判断 你的RadioButton 里面的name 属性是否等于 "接受"
是的话 Button按钮为可用 否则不可用 参考技术C 可以用js判断单选按钮是否选择,选中则提交按钮事件
如何在 ASP.NET 中找到所选 RadioButton 的值?
【中文标题】如何在 ASP.NET 中找到所选 RadioButton 的值?【英文标题】:How can I find the selected RadioButton's value in ASP.NET? 【发布时间】:2011-08-09 14:32:42 【问题描述】:我有两个asp:RadioButton
控件具有相同的GroupName
,这基本上使它们相互排斥。
我的标记:
<asp:RadioButton ID="OneJobPerMonthRadio" runat="server"
CssClass="regtype"
GroupName="RegistrationType"
ToolTip="125"/>
<asp:RadioButton ID="TwoJobsPerMonthRadio" runat="server"
CssClass="regtype"
GroupName="RegistrationType"
ToolTip="200"/>
我的目的是找到选中的 RadioButton 的工具提示/文本。我有这个代码隐藏:
int registrationTypeAmount = 0;
if (OneJobPerMonthRadio.Checked)
registrationTypeAmount = Convert.ToInt32(OneJobPerMonthRadio.ToolTip);
if (TwoJobsPerMonthRadio.Checked)
registrationTypeAmount = Convert.ToInt32(TwoJobsPerMonthRadio.ToolTip);
我发现该代码丑陋且多余。 (如果我有 20 个复选框呢?)
有没有一种方法可以从一组具有相同GroupName
的 RadioButtons 中获取选中的RadioButton
?如果没有,写一个的指针是什么?
P.S:在这种情况下我不能使用RadioButtonList
。
【问题讨论】:
【参考方案1】:你想这样做:
RadioButton selRB = radioButtonsContainer.Controls.OfType<RadioButton>().FirstOrDefault(rb => rb.Checked);
if(selRB != null)
int registrationTypeAmount = Convert.ToInt32(selRB.ToolTip);
string cbText = selRB.Text;
radioButtonsContainer 是单选按钮的容器。
更新
如果您想确保获得具有相同组的 RadioButtons,您有 2 个选项:
将它们放在单独的容器中
将组过滤器添加到 lamdba 表达式中,如下所示:
rb => rb.Checked && rb.GroupName == "YourGroup"
更新 2
修改了代码,确保在没有选择 RadioButton 时它不会失败,从而使其更加防错。
【讨论】:
+1:非常好的想法。我不会每次都有一个 asp.net(runat="server") 容器控件。 如果您没有声明的容器,请使用该页面并按照建议按组查找。 @Adraian:不太好。访问页面 controlcollection 应该是递归的。实际上,我正在考虑按组名访问控件。但是 webforms 架构太死板了,无法做到这一点。曾经喜欢过网络表单,但我想我应该切换到 MVC。这些天来,我对 webforms 的喜爱越来越少,而对 c# 的喜爱越来越多…… 为什么不把单选按钮放在面板中?那将是您的 radioButtonsContainer。 我的单选按钮在<asp:Content ID="Main" ContentPlaceHolderID="cphMain" ClientIDMode="Static" runat="server">
内,但我似乎无法通过 Page.FindControl 访问该容器。还有更多相关信息吗?【参考方案2】:
您可以尝试写下与以下类似的方法:
private RadioButton GetSelectedRadioButton(params RadioButton[] radioButtonGroup)
// Go through all the RadioButton controls that you passed to the method
for (int i = 0; i < radioButtonGroup.Length; i++)
// If the current RadioButton control is checked,
if (radioButtonGroup[i].Checked)
// return it
return radioButtonGroup[i];
// If none of the RadioButton controls is checked, return NULL
return null;
然后,您可以像这样调用该方法:
RadioButton selectedRadio =
GetSelectedRadioButton(OneJobPerMonthRadio, TwoJobsPerMonthRadio);
它会返回选中的那个(如果有的话),无论你有多少单选按钮,它都会起作用。如果愿意,您可以重写该方法,使其返回 SelectedValue。
【讨论】:
我在我的项目中将它与“System.Web.UI.HtmlControls.HtmlInputRadioButton”一起使用,而不仅仅是“RadioButton”,它工作得很好。谢谢!以上是关于ASP.NET中RadioButton与Button的使用的主要内容,如果未能解决你的问题,请参考以下文章
asp.net(C#)怎样将listview中的radiobutton设置成互斥?