0

new MailMessage body关于我似乎无法在谷歌中找到答案的快速问题。

如何创建一个 if 语句来检查元素是否可见,然后获取元素中的字符串并将其应用于正文?

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

编辑:Visual Studio 说“不能将类型‘字符串’隐式转换为‘布尔’”

4

7 回答 7

2

用括号括起来,例如:

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

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

如果你错过了括号,那么它首先尝试连接D1ContactPanel.Visible到“<b>”,然后评估失败的条件,因为它无法评估字符串。因此错误“无法将字符串转换为布尔值”。

于 2013-07-29T10:23:20.053 回答
1

需要加一些括号,不仅是为了编译,也是为了开发者的眼光:)

mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") + "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";
于 2013-07-29T10:21:02.897 回答
1
mail.Body += "<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") + "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") + "</br></br>";
于 2013-07-29T10:21:12.487 回答
1

将字符串值与布尔条件分开:

mail.Body += @"<b>" + (D1ContactPanel.Visible ? "Subsidiary contacts: " : "") 
+ "</b> " + (D1ContactPanel.Visible ? D1ContactDDL.Text : "") 
+ "</br></br>";
于 2013-07-29T10:21:33.890 回答
1

请更改您的代码

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>";
于 2013-07-29T10:21:53.907 回答
1

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

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

那么您甚至可以将此字符串文字移动到常量或资源中

于 2013-07-29T10:23:45.237 回答
0

你可以试试

mail.Body += string.Format("<b>{0}</b> {1}<br /><br />", D1ContactPanel.Visible ? "Subsidiary contacts: " : string.Empty, D1ContactPanel.Visible ? D1ContactDDL.Text : string.Empty);
于 2013-07-29T10:35:35.997 回答