我有一个大型的RadioButtonList(大约20个项目),需要检查选择了哪一个,以便通过提交的电子邮件返回该值(这是一个电子邮件表单)。
现在我正在运行一个大型的If-Else-If循环来解析每个RadioButton以找出哪个被选中:
if (PriMsg_AP_1.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_AP_1.Text;
}
else if (PriMsg_AP_2.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_AP_2.Text;
}
else if (PriMsg_Devices_1.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_Devices_1.Text;
}
else if (PriMsg_SMB_1.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_SMB_1.Text;
}
else if (PriMsg_SMB_2.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_SMB_2.Text;
}
else if (PriMsg_SMB_3.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_SMB_3.Text;
}
else if (PriMsg_Vertical_1.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_Vertical_1.Text;
}
else if (PriMsg_Vertical_2.Checked)
{
message.Body += "<b>Primary Message:</b> " + PriMsg_Vertical_2.Text;
}
等
你可以看到它很长,对我来说,我认为有一种更简单的方法来解析这个列表。喜欢通过For循环运行一切?但不知道怎么做,因为每个RadioButton都有不同的名字......
一些警告:列表在多个类别下被破坏,因此并非所有RadioButton都在一个屏幕中,因此我将整个列表与GroupName绑定,以便用户只能选择一个项目。
思考?建议?
我在这个项目上使用ASP.NET。
〜阿伦
编辑:我正在使用单独的RadioButton并将它们与GroupName绑在一起。不使用RadioButtonList。对此感到抱歉。
<asp:RadioButton ID="PriMsg_AP_1" GroupName="PriMsg" runat="server" text="Promo 1" CssClass="radiobutton" />
答案 0 :(得分:2)
您可以尝试使用单选按钮列表。
"rlist1.SelectedItem.Text in code behind"
会为您提供选择的单选按钮文字。
<asp:RadioButtonList runat="server" ID="rlist1">
<asp:ListItem Text="a">
</asp:ListItem>
<asp:ListItem Text="b">
</asp:ListItem>
</asp:RadioButtonList>
答案 1 :(得分:1)
您可以使用条件运算符,这会使代码更短:
message.Body += "<b>Primary Message:</b> " +
PriMsg_AP_1.Checked ? PriMsg_AP_1.Text :
PriMsg_AP_2.Checked ? PriMsg_AP_2.Text :
PriMsg_Devices_1.Checked ? PriMsg_Devices_1.Text :
PriMsg_SMB_1.Checked ? PriMsg_SMB_1.Text :
PriMsg_SMB_2.Checked ? PriMsg_SMB_2.Text :
PriMsg_SMB_3.Checked ? PriMsg_SMB_3.Text :
PriMsg_Vertical_1.Checked ? PriMsg_Vertical_1.Text :
PriMsg_Vertical_2.Checked ? PriMsg_Vertical_2.Text :
"No message";
另一种选择是将所有单选按钮放在一个集合中,以便您可以遍历它们:
RadioButton[] radios = new RadioButton[] {
PriMsg_AP_1, PriMsg_AP_2, PriMsg_Devices_1,
PriMsg_SMB_1, PriMsg_SMB_2, PriMsg_SMB_3,
PriMsg_Vertical_1, PriMsg_Vertical_2
};
foreach (RadioButton radio in radios) {
if (radio.Checked) {
message.Body += "<b>Primary Message:</b> " + radio.Text;
break;
}
}
答案 2 :(得分:0)
我建议您放置一个围绕它们的asp面板并使用以下代码在此面板上循环
foreach (Control c in myPanel.Controls)
{
if(c.GetType() == typeof(RadioButton))
{
if(((RadioButton)c).Checked)
{
message.Body += "<b>Primary Message:</b> " + ((RadioButton)c).Text;
}
}
}
这肯定会有效,但如果您不使用母版页就可以增强它,只需用this.Controls替换mpPane.Controls