【问题标题】:ASP.NET Check Box ControlASP.NET 复选框控件
【发布时间】:2011-07-20 17:59:07
【问题描述】:

我正在用 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 行代码并复制它。
  • 我也推荐使用 StringBuilder。
  • 另外,在asp.net中CheckBox控件和CheckBoxList控件是有区别的。小心不要让他们混淆。
  • 我知道。我在那里有一个,所以我只是添加了其他的,看看是否会做任何不同的事情。但它通过电子邮件将第一个选项发送了三次。我想它会做什么。我需要选项 2、3、4 等。
  • 看三行?它们之间有什么区别?没什么,这就是为什么你看到同样的东西三次。

标签: c# asp.net email forms


【解决方案1】:

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

例子:

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>";
   }
}

【讨论】:

    【解决方案2】:

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

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

    然后把末尾多余的逗号去掉:)

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

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

    【讨论】:

      【解决方案3】:

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

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

      当然,您不能将其连接为原始字符串连接的一部分,因此构建一个“InterestedIn”字符串并将其连接到电子邮件正文。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多