新邮件正文中的If语句

本文关键字:If 语句 正文 新邮件 | 更新日期: 2023-09-27 18:25:23

关于new MailMessage body的快速问题,我似乎在谷歌上找不到答案。

如何生成if语句,检查元素是否可见,然后获取元素中的字符串并将其应用于主体?

mail.Body += "<b>" + D1ContactPanel.Visible ? "Subsidiary contacts: " : "" + "</b> " + D1ContactPanel.Visible ? D1ContactDDL.Text : "" + "</br></br>";

编辑:Visual studio表示"无法将类型‘string’隐式转换为‘bool’"

新邮件正文中的If语句

用括号括起来,如:

mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") + "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";

这将评估您的条件,并返回适当的字符串作为连接结果。

如果遗漏了方括号,则它首先尝试将D1ContactPanel.Visible连接到"<b>",然后计算条件,但由于无法计算字符串而失败。因此出现错误"无法将字符串转换为布尔值"。

您需要添加一些括号,这不仅是为了编译,也是为了开发者的视力:)

mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") + "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";

从布尔条件中分离字符串值:

mail.Body += @"<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") 
+ "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") 
+ "</br></br>";

请更改您的代码来自

mail.Body += "<b>" + D1ContactPanel.Visible ? "Subsidiary contacts: " : "" + "</b> " + D1ContactPanel.Visible ? D1ContactDDL.Text : "" + "</br></br>";

mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "" )+ "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";
mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") + "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";

您可以像其他答案一样将其括在括号中以避免异常,但我认为您不需要检查两次,并使此代码更具可读性,如下所示

if(D1ContactPanel.Visible)
   mail.Body += string.Format("<b>Subsidiary contacts: </b>{0}</br></br>", D1ContactDDL.Text);

然后您甚至可以将此字符串文字移动到常量或资源

您可以尝试

mail.Body += string.Format("<b>{0}</b> {1}<br /><br />", D1ContactPanel.Visible ? "Subsidiary contacts: " : string.Empty, D1ContactPanel.Visible ? D1ContactDDL.Text : string.Empty);