【发布时间】:2016-07-28 07:19:31
【问题描述】:
有没有比我现在尝试的更有效的方法来构建 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 内还有一个对象列表,所以代码会很糟糕。
有人知道如何以更简单、更清洁的方式解决这个问题吗?
【问题讨论】:
-
您是否尝试使用
TagBuilder或System.Web.Mvc来生成HTML?我的意思不是 MVC 应用程序,仅包括System.Web.Mvc的参考。 -
"。问题是我有比这 3 个(BusinessName、SwiftBIC 和 IBAN)更多的属性”可能是反射的用例和一个 customTag 说“将其包含在 html 表中”。或者也许只是 XmlSerialize 列表并将转换保留为 html 表作为查看器上的 xslt 转换?
-
另外,我认为您似乎至少要问两件事('我如何迭代一堆列表中的一堆字段/属性')=> 反射,可能&怎么做我为给定的工作集有效地构建了一个 HTML 表。所有的答案似乎都是关于 html 的,所以如果你的问题实际上是关于迭代的,那么可能需要稍微改写一下。