HTML 在 C# 中使用字符串生成器无法正常工作 ASP.NET MVC
HTML not working fine with string builder in C# ASP.NET MVC
sb.Append("<table style='border:1px solid black; border-collapse:collapse; width:100%;'>");
sb.Append("<tr style='background:rgb(146,208,80); border:1px solid black;'>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("OPUS ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Location"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("WMS #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Tracking #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Delivery Date"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton Status"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU Description"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Qty Outstanding"); sb.Append("</th>");
sb.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr style='border:1px solid green; border-collapse: collapse; width:100%;'>");
for (int i = 0; i < dt.Columns.Count; i++)
{
sb.Append("<td style='border:1px solid black; border-collapse:collapse; text-align:center; padding:0%;'>");
string file = row.Field<string>(i);
sb.Append(file + "</td>");
}
sb.Append("</tr>");
}
sb.Append("</table>");
上面的代码正在制作 HTML Table 并将其绑定到电子邮件正文中,但是发生了错误。
图像清晰可见:
我同意@Hans Kesting 最好使用 Razor 语法。尤其有用的是摆脱 DataSets 和 DataTabes 并为您的数据使用模型。这将使遍历您的数据并使用 WebGrid 之类的东西更容易地填充 table。但是,如果 none 这是可能的,我过去所做的是:
在 Helper 方法中创建 HTML table 字符串
将 HTML 字符串传递给控制器操作方法
将 HTML 字符串存储到 TempData 对象中
访问 TempData 对象并使用以下方法将 table 渲染到视图:
@Html.Raw(临时数据["html"])
sb.Append("<table style='border:1px solid black; border-collapse:collapse; width:100%;'>");
sb.Append("<tr style='background:rgb(146,208,80); border:1px solid black;'>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("OPUS ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Location"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("WMS #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton ID"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Tracking #"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Delivery Date"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Carton Status"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("SKU Description"); sb.Append("</th>");
sb.Append("<th style='border: 1px solid black; text-align:center; padding:0%;'>"); sb.Append("Qty Outstanding"); sb.Append("</th>");
sb.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr style='border:1px solid green; border-collapse: collapse; width:100%;'>");
for (int i = 0; i < dt.Columns.Count; i++)
{
sb.Append("<td style='border:1px solid black; border-collapse:collapse; text-align:center; padding:0%;'>");
string file = row.Field<string>(i);
sb.Append(file + "</td>");
}
sb.Append("</tr>");
}
sb.Append("</table>");
上面的代码正在制作 HTML Table 并将其绑定到电子邮件正文中,但是发生了错误。
图像清晰可见:
我同意@Hans Kesting 最好使用 Razor 语法。尤其有用的是摆脱 DataSets 和 DataTabes 并为您的数据使用模型。这将使遍历您的数据并使用 WebGrid 之类的东西更容易地填充 table。但是,如果 none 这是可能的,我过去所做的是:
在 Helper 方法中创建 HTML table 字符串
将 HTML 字符串传递给控制器操作方法
将 HTML 字符串存储到 TempData 对象中
访问 TempData 对象并使用以下方法将 table 渲染到视图:
@Html.Raw(临时数据["html"])