如何将样式定义附加到<;TD>;使用StringBuilder在字符串中标记
本文关键字:使用 gt StringBuilder 字符串 TD lt 样式 定义 | 更新日期: 2023-09-27 18:01:05
我正在从C#类型的列表构建一个HTML表。到目前为止,构建表还可以正常工作,但我现在需要将样式附加到构建表的字符串中的一个<TD>
标记上。
我所尝试的只是在使用字符串生成器将样式定义附加到字符串时,将其添加到TD
中。但我在使用样式定义时遇到语法错误。
问题:如何将样式定义附加到字符串中的标记?
我使用字符串生成器字符串实例创建表体:
StringBuilder releaseStatusTableBodyData = new StringBuilder();
然后在表字符串中添加一行和一列。删除样式中的双引号也没有删除显示的语法错误:
foreach(var row in releaseStatusList)
{
//for each record create a new table row
releaseStatusTableBodyData.Append("<TR>'n");
releaseStatusTableBodyData.Append("<TD style=""bgcolor: green;"">"); //added the style to the TD here, but get syntax error on the style telling me ) is required.
releaseStatusTableBodyData.Append(row.Days_Owned);
releaseStatusTableBodyData.Append("</TD>");
releaseStatusTableBodyData.Append("</TR>'n"); //end of row
}
在字符串的开头放一个逐字逐句的文字(@
(。
releaseStatusTableBodyData.Append(@"<TD style=""background-color: green;"">");
^^^
从某些背景来看,在字符串中添加转义字符串似乎更容易,但对我来说,这更容易阅读。
也许也值得尝试HtmlTextWriter
。它本质上是在做同样的事情,只需要一些特定于HTML的帮助。
string html;
using (var sw = new StringWriter())
using (var hw = new HtmlTextWriter(sw))
{
hw.RenderBeginTag(HtmlTextWriterTag.Tr);
hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green");
hw.RenderBeginTag(HtmlTextWriterTag.Td);
hw.RenderEndTag();
hw.RenderEndTag();
html = sw.ToString();
}
有点奇怪的是,在渲染Td
标记之前,必须添加样式属性。
好的是,您可以使用许多预定义的常量来标记和样式名称。如果你需要一些条件逻辑,这会容易得多。
hw.RenderBeginTag(HtmlTextWriterTag.Tr);
if(makeThisGreen)
hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green");
if(makeThisBold)
hw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
hw.RenderBeginTag(HtmlTextWriterTag.Td);
hw.RenderEndTag();
hw.RenderEndTag();
对于StringBuilder
,当您达到第二个条件时,您必须检查是否已经启动了style
属性,以确保没有创建两次。然后,您必须检查这些条件中的任何一个是否为真,以便知道是否将结束引号添加到style
属性中。(或者你可以创建一个方法来完成所有这些工作。(但这项工作已经在HtmlTextWriter
类中完成了。
您还可以使用WriteBeginTag(string)
和WriteEndTag(string)
,它们使您能够更明确地控制写标签。
foreach(var row in releaseStatusList) {
//for each record create a new table row
releaseStatusTableBodyData.Append("<TR>'n").Append("<TD style=color:green>").Append(row.Days_Owned).Append("</TD>").Append("</TR>'n");
}