我提交表单并收到一封电子邮件,说明表单的结果,在这种情况下,如果已选中三个复选框中的任何一个,则会显示。我当前的问题是,如果选中多个复选框,则不会显示第二个或第三个复选框被选中。
示例:我检查了所有三个复选框,结果是:
什么时候应该显示所有人都这样说:是
我的首页代码:
<td class="nobor">
<asp:CheckBoxList ID="OptList" runat="server">
</asp:CheckBoxList>
我的页面加载:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
OptList.Items.Add(new ListItem("Marketing Mailings", "1"));
OptList.Items.Add(new ListItem("3rd Party Mailings", "2"));
OptList.Items.Add(new ListItem("VISA Promotions", "3"));
}
在我创建电子邮件正文的Submit_Click中:
sb.Append("<u>Opt-Out Preference</u><br/>");
if (OptList.SelectedItem.Value == "1") sb.Append("<b>Marketing Mailings:</b> Yes<br />");
else sb.Append("<b>Marketing Mailings:</b> No<br />");
if (OptList.SelectedItem.Value == "2") sb.Append("<b>3rd Party Mailings:</b> Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b> No<br />");
if (OptList.SelectedItem.Value == "3") sb.Append("<b>VISA Promotions:</b> Yes<br />");
else sb.Append("<b>VISA Promotions:</b> No<br />");
答案 0 :(得分:1)
SelectedItem
将返回一个项目,而不是所有项目
您应该将代码修改为以下内容:
if (OptList.Items[0].Selected) sb.Append("<b>Marketing Mailings:</b> Yes<br />");
else sb.Append("<b>Marketing Mailings:</b> No<br />");
if (OptList.Items[1].Selected) sb.Append("<b>3rd Party Mailings:</b> Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b> No<br />");
...等
请注意,我正在检查每个项目是否已选中,而不是SelectedItem
值。
另一种选择是遍历所有项目并找到所选项目:
var ListOfSelectedValues = OptList.Items.Cast<ListItem>().Where(x => x.Selected).Select(x => x.Value).ToList();
这将返回已选择的所有值的列表...