はありま利用HtmlTextWriterればならないから適応的なレンダリング?
-
05-09-2019 - |
質問
外から適応的なレンダリングのための代替デバイスなっ意味を書くすべてのこのコード:
writer.WriteBeginTag("table");
writer.WriteBeginTag("tr");
writer.WriteBeginTag("td");
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteEncodedText(someTextVariable);
writer.WriteEndTag("td");
writer.WriteEndTag("tr");
writer.WriteEndTag("table");
がStringBuilderを築くことができて同じことをするだけです:
sb.Append("<table><tr><td>");
sb.Append(someTextVariable);
sb.Append("</td></tr></table>");
解決
私はを考えることができる二つの理由に使用HtmlTextWriter:
利用できるライターのイラストにおindents、お出力されるHTMLのフォーマットをもとに掲載される一行
HtmlTextWriterは、通常を伴う出力ストリームでなければならないと考えてより効率的な構築の長い文字列をメモリによってどのくらいはHTMLで生成).
ずれも特別の理由が十分に納得使えるようになったので、作家が効率が必要な場合、または皆様にお伝えしたくて書き込みをベース管理する再利用すべきとしてプロになりたいということが可能です。イ:-).
他のヒント
もう一つの利点がある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では基本的に制につ標準のフォーマットを再びメンテナンス性が向上).
編集: このソフトの存在により、実際にミスのスニペットを、必要なポリネシアンスパとガバメに固定します。この確認のたかったのです。
HtmlTextWriterとい:
HtmlTextWriterは最大のマークアップラインデントで描画されます。
あ、パフォーマンスへの影響としてHtmlTextWriterに書き込みに直接出力ストリームです。Stringbuilderしない出力ストリームに書き込みますのでToStringして呼び出されます。
ある例ではなぜことはできませHtmlTextWriter用 保存と再利用のHTML出力 こちらです。
ったのですが合格する必要がありまHtmlTextWriterのための描画するサービスです。しょうがない最後のライター。Write(sb.ToString());あの例です。よくお使いいただくために低コードを書き原HTMLに出ようとしている、コインパーキングなどがありStringBuilderの例では、HtmlTextWriter.Writeです。
writer.Write("<table><tr><td>");
writer.Write(someTextVariable);
writer.Write("</td></tr></table>");
それを使用StringBuilderう不要です。とHtmlTextWriterは、少なくとも、ある程度確認し、生成されたHTMLでは対応がない真には、このような場合には、書き原HTML).
最大の理由かを考えることができるのは避けるのにどのくらいの余分なステップをサニタイズをご入力します。に応じてドキュメント、 WriteEncodedText
自動的に形式の角度ブラケットに。
クロスサイト-スクリプティング 実は、このような背景の下で、何もできないようにする未来♪維持コードです。