有没有比我现在正在尝试的方法更有效的构建 HTML 表格的方法?
我得到一个对象,其中有一些实体列表。所以我需要通过它们中的每一个并首先构建一个单元格,然后将它添加到一行中,最后将它添加到表中。
我正在尝试的东西完全是乱七八糟的,有点像作品,但它有太多冗余代码。
public static string CreateNotificationMailMessage(NotificationMailMessage mailMessageObject)
{
var table = new HtmlTable();
var mailMessage = new StringBuilder();
string html;
if (mailMessageObject.InvalidCompanies.Any())
{
HtmlTableRow row;
HtmlTableCell cell;
foreach (var invalidCompany in mailMessageObject.InvalidCompanies)
{
row = new HtmlTableRow();
cell = new HtmlTableCell();
cell.InnerText = invalidCompany.BusinessName;
row.Cells.Add(cell);
cell.InnerText = invalidCompany.SwiftBIC;
row.Cells.Add(cell);
cell.InnerText = invalidCompany.IBAN;
row.Cells.Add(cell);
table.Rows.Add(row);
}
}
using (var sw = new StringWriter())
{
table.RenderControl(new HtmlTextWriter(sw));
html = sw.ToString();
}
mailMessage.AppendFormat(html);
return mailMessage.ToString();
}
最后我想返回创建的 HTML 表的文本版本。问题是我拥有的属性比这 3 个属性(BusinessName、SwiftBIC 和 IBAN)多得多,而且我在 mailMessageObject 中还有一个对象列表,所以代码会很糟糕。
任何人都知道如何以更简单和更清洁的方式解决这个问题?
原文由 nemo_87 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一种不错的方法,只是“需要什么”才能输出像 HTML 这样复杂的东西——除非你想用纯字符串来做(如果不是更糟的话,它也同样混乱)。
一项改进:不要多次使用同一个单元格对象,否则会有输出不正确的风险。改进代码:
当然,您也可以创建自己的帮助程序来创建单元格、创建一整行单元格等。还有一些很好的库,例如,请参阅 https://www.nuget.org/packages/HtmlTags/ 。