ASP.NET复选框控件

时间:2011-03-22 18:35:56

标签: c# asp.net email forms

我正在ASP.NET C#中创建一个表单,因此可以填写并通过电子邮件发送给多个收件人。表单的一部分是带有多个选项的复选框部分。我只能选择通过电子邮件发送回收件人的第一个选项,因此如果用户选择两个或更多复选框,它只会通过电子邮件发送第一个选项。下面是我的代码表

    SmtpClient smtpClient = new SmtpClient();
    MailMessage message = new MailMessage();
    MailAddress From = new MailAddress(mailTextBox.Text);
    message.To.Add(new MailAddress("email@domain.com"));
    message.Subject = (companyTextBox.Text);
    message.IsBodyHtml = true;
    message.Body = "<html><head></head><body>" +
    "<p></p>" +
    "<p>Business Type: " + typeDropDownList.Text + "</p>" +
    "<p>Company: " + companyTextBox.Text + "</p>" +
    "<p>Name: " + nameTextBox.Text + "</p>" +
    "<p>Address: " + addressTextBox.Text + "</p>" +
    "<p>City: " + cityTextBox.Text + "</p>" +
    "<p>State: " + stateDropDownList.Text + "</p>" +
    "<p>Zip Code: " + zipcodeTextBox.Text + "</p>" +
    "<p>Phone Number: " + phoneTextBox.Text + "</p>" +
    "<p>Email: " + mailTextBox.Text + "</p>" +
    "<p>Number Of Locations: " + locationsDropDownList.Text + "</p>" +

    **// This is my problem area //**
    "<p>Interested In: " + interestedCheckBoxList.Text + "</p>" +
    "<p>Interested In: " + interestedCheckBoxList.Text + "</p>" +
    "<p>Interested In: " + interestedCheckBoxList.Text + "</p>" +
    **// This is my problem area //**

    "<p>Message: " + messageTextBox.Text + "</p>" +
    "</body></html>";
    smtpClient.Send(message);
    Response.Redirect("http://www.domain.com");

提前谢谢。

吉姆

3 个答案:

答案 0 :(得分:2)

您需要遍历CheckBoxList中的Items并单独添加它们。

示例:

foreach(ListItem li in interestedCheckBoxList.Items)
{
   //add your stuff
   if(li.Selected)
   {
       //should be using string builder here but....
       message.Body += "<p>Interested In: " + li.Text + "</p>";
   }
}

答案 1 :(得分:1)

您需要遍历CheckBoxList并找到所有选中的项目并获取每个项目的Text属性,并附加到您的电子邮件文本。

string yourSelectedList = "";
foreach (ListItem i in chklst.Items)
{
    if (i.Selected)
         yourSelectedList += (i.Text + ", ");
}

然后删除最后的额外逗号:)

"<p>Interested In: " + yourSelectedList  + "</p>" +

在将多个字符串连接在一起时尝试使用StringBuilder,因为它会产生很大的不同。

答案 2 :(得分:0)

尝试使用以下内容替换“问题区域”中的代码:

string InterestedIn = "";
foreach (ListItem li in interestedCheckBoxList.Items)
{
    if (li.Selected)
        InterestedIn += "<p>Interested In: " + li.Text + "</p>";
}

当然,你不能将它作为原始字符串连接的一部分连接起来,所以构建一个“InterestedIn”字符串排序并将电子邮件正文连接起来。