不能连接多个字符串
本文关键字:字符串 连接 不能 | 更新日期: 2023-09-27 18:08:36
我正在尝试建立一个字符串,它给出错误,我正在分享我的代码,请指导我
public static bool Send(string Email, string ProcessID, string Name, string Part, string MFG, string TicketTotal)
{
StringBuilder sb = new StringBuilder();
string html = @"Dear, " + Name + "<br><br>" + "We are sending the price for your reference" + "<br><br>"
+ @"<table><thead style='background-color: #006DCC;color: white;padding:10px;width:700px;'>
<tr>
<th style='background-color:#006DCC;color: white;'>
Part No
</th>
<th>
Manufacturer
</th>
</tr>
</thead>" +
@"<tbody style='background-color: #EEEEEE;'>" +
for(int i=1;i<10;i++)
{
@"<tr>
<td style='background-color: #EEEEEE;'>" +
@"<span>" + Part + "</span>" +
"</td>" +
@"<td>" + "<span>" + MFG + "</span>" + "</td>" +
@"</tr>"
} +
@"</tbody></table>" +
@"<br><br>" + "Total Amount: " + TicketTotal + "<br>" + "Process ID: " + ProcessID + "<br><br>"
+ @"For more inquiry please visit <a href='#' target='_blank'> Contact</a>"
+ @"<br><br>" + "Best Regards" + "<br><br>" + "Address: Address here" + "<br>"
+ @"Tel: Number" + "<br>" + "Fax: number" + "<br>" + "<a href='#' target='_blank'>abc</a>";
}
我想在表中添加十行使用循环,我已经搜索了互联网,但找不到任何合适的解决方案。
在你的评论中,你提到你正在发送基于html的电子邮件。我也这样做过。我发现最简单的方法是把一个HTML文件作为你的资源,其中包含电子邮件中带有"标签"的特定区域。例如,我选择%USERNAME%作为明显的用户名。然后我能够使用资源作为字符串,并为我拥有的标签做一个string.Replace
。这有两个目的。第一,它很容易准备。第二,很容易编辑和预览我的HTML。下面是我的代码最后的样子。
public override string GenerateEmailBody()
{
var htmlBody = System.IO.File.ReadAllText("htmlEmail''dliHTML.html");
htmlBody = htmlBody.Replace("%AUTHOR%", Author);
htmlBody = htmlBody.Replace("%REV%", Revision);
htmlBody = htmlBody.Replace("%REPO%", Repo);
htmlBody = htmlBody.Replace("%LOG%", Log);
htmlBody = htmlBody.Replace("%DATE%", System.DateTime.Now.ToString("MMMM-dd-yyyy HH:mm:ss"));
htmlBody = htmlBody.Replace("%ADDED%",GetUList("Added",Added));
htmlBody = htmlBody.Replace("%DELETED%",GetUList("Deleted",Deleted));
htmlBody = htmlBody.Replace("%MODIFIED%",GetUList("Modified",Modified));
return htmlBody;
}
您可以看到,我确实创建了一个ULList。可能有更好的方法,但这种方法并不太可怕。
private string GetUList(string header, string[] list)
{
if (list==null) return string.Empty;
if (list.Length==0) return string.Empty;
var ulist = GetHeaderString(3, header);
ulist += "<UL>";
foreach (var element in list)
{
ulist += string.Format("<li>{0}</li>", element);
}
ulist += "</UL>";
return ulist;
}
编辑
这里是"Get header String"方法,我忘了添加
private string GetHeaderString(int size, string message)
{
return string.Format("<H{0}>{1}</H{0}>" ,size, message);
}
正如其他人所说,这是完全错误的方法。
但是通过解释为什么不起作用来给你一个正确的方向,见下文。
您正在尝试将一个循环连接到一个字符串。你不能这样做:
@"<tbody style='background-color: #EEEEEE;'>" + // this plus sign is the problem
for(int i=1;i<10;i++)
{
@"<tr> //etc.
你需要添加到循环中的字符串:
string html = @"Dear, " + Name + "<br><br>" + "We are sending the price for your reference" + "<br><br>"
+ @"<table><thead style='background-color: #006DCC;color: white;padding:10px;width:700px;'>
<tr>
<th style='background-color:#006DCC;color: white;'>
Part No
</th>
<th>
Manufacturer
</th>
</tr>
</thead>" +
@"<tbody style='background-color: #EEEEEE;'>"; ''terminate the line.
//start the loop
for(int i=1;i<10;i++)
{
html += @"<tr>
<td style='background-color: #EEEEEE;'>" +
@"<span>" + Part + "</span>" +
"</td>" +
@"<td>" + "<span>" + MFG + "</span>" + "</td>" +
@"</tr>"; // not plus
}
html += @"</tbody></table>" +
@"<br><br>" + "Total Amount: " + TicketTotal + "<br>" + "Process ID: " + ProcessID + "<br><br>"
+ @"For more inquiry please visit <a href='#' target='_blank'> Contact</a>"
+ @"<br><br>" + "Best Regards" + "<br><br>" + "Address: Address here" + "<br>"
+ @"Tel: Number" + "<br>" + "Fax: number" + "<br>" + "<a href='#' target='_blank'>abc</a>";