另一个优点可能是使用 HtmlTextWriter 可以以更清洁(更易于维护)的方式格式化代码,并且 HtmlTextWriter 支持自动编码 HTML。比较:
writer.AddAttribute(HtmlTextWriterAttribute.Id, "someId");
if (!string.IsNullOrEmpty(cssClass)) writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);
writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "Red");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.WriteEncodedText(text);
writer.RenderEndTag();
相对:
StringBuilder html = new StringBuilder();
html.Append("<span");
html.Append(" id=\"someId\"");
if (!string.IsNullOrEmpty(cssClass)) html.AppendFormat(" class=\"{0}\"", HttpUtility.HtmlAttributeEncode(cssClass));
html.Append(">");
html.Append(HttpUtility.HtmlEncode(text));
html.Append("</span>");
有人可能会争辩说,第二个示例中的代码可以用一种不同的、可能更简洁的方式编写,但这可以被视为 HtmlTextWriter 的一个优势,因为它基本上强制执行一种规范的格式化方式(这再次改进了维护)。
编辑:事实上,我实际上在第二个片段中犯了一个错误,我需要返回并修复响应。这证实了我想表达的观点。