首页 > 解决方案 > HTML 在 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 表格并将其绑定到电子邮件正文中,但发生了一些错误。

图像是为了清晰的视图:

在此处输入图像描述

标签: c#htmlasp.net-mvcstringstringbuilder

解决方案


我同意@Hans Kesting 最好使用 Razor 语法。远离 DataSets 和 DataTabes 并为您的数据使用模型尤其有用。这将使遍历您的数据并使用WebGrid 之类的东西更容易填充表格。但是,如果这一切都不可能,我过去所做的是:

  • 在 Helper 方法中创建 HTML 表字符串

  • 将 HTML 字符串传递给控制器​​操作方法

  • 将 HTML 字符串存储到 TempData 对象中

  • 使用以下方法访问 TempData 对象并将表呈现到视图中:

    @Html.Raw(TempData["html"])

推荐阅读