使用HtmlTextWriter描画するサーバーのす
-
20-08-2019 - |
質問
書いの RenderContents()
方法は私のASP.NET サーバー。の方法を使用して HtmlTextWriter
オブジェクトを描画するために出力する。制御に書い、 HtmlTextWriter
's方法は少ないので、工夫が必要かと思います必要とするためのコードの開閉毎にタグを追加べての属性のストリームです。のような感じっとコードいようにすることだという以上が必要です。
考える場合に使用したchainableクラスなど StringBuilder
, 私のコードがたくさんいるとクリーナー読みやすくなりました。
何を思ったのはありま理由での利用 HtmlTextWriter
オブジェクトを描画するのに私は全体をコントロールの内容は?その他の安全性の確認を行います(いと仮定するなどの使い分けが出来て便利です書タグの順序を間違えを無効になマークアップんだ理由です。
うしやすくなるだけでいようになります:
protected override void RenderContents(HtmlTextWriter output)
{
StringBuilder s = new StringBuilder();
s.Append("lots")
.Append("of")
.Append("strings");
output.BeginRender();
output.Write(s.ToString());
output.EndRender();
}
あな理由その一環として行われた不良が考えたんですか?
更新
応 Mehrdad Afshari回答:
持っているときにこのようなことへのこだわりを大切にしていメモリ要件を個別 StringBuilder
オブジェクトインスタンスを生成.してはいかがでしょうかを、ラッパーのためのHtmlTextWriterできるように鎖で繋がれる余分な文字列が取れていないと思う。
public class ChainedHtmlTextWriter
{
private HtmlTextWriter _W;
public ChainedHtmlTextWriter(HtmlTextWriter writer)
{
_W = writer;
}
public ChainedHtmlTextWriter Write<T>(T value)
{
_W.Write(value);
return this;
}
public ChainedHtmlTextWriter WriteLine<T>(T value)
{
_W.WriteLine(value);
return this;
}
}
解決
私はアプリケーションの開発の恐ろしいパスだけます。このharkensの日時に自分のISAPI dllを吐き出htmlのコードです。では一定の頭痛の中で業務に取り組めそうです。の場合コードは文字列、そして何かが間違っています。
多くのコードをタイプを変更したいインスタンスを生成しserverオブジェクトの設定をその性質として希望をお伝えしています。RenderControl(作家).このコードを読むほうが楽というとするのに用いられております。がある場合はパフォーマンスからオーバーヘッドのそれにより起こり得るいをさせて頂いた上で受付させて頂き(実際には、申請一般的に大幅な高速化後のためのシェイプを作ってみました私は、anecdotallyこうではないがんの為の私のコードとします。
簡単な欠点をハード-コーディングのおも文字列がHTMLの基準は変化します。このコードを行なっていた04/05、その後 <BR> となってい <br /> と大文字のhtmlタグがなく供給できなくなっ等場合に使用していたためサーバーの管理、サーバ管理の変更を行って出力されるhtmlとして選択して下さい(実際に必要なものです。これは一つだけの簡単な例です。
編集:あ、ちなみBeginRenderとEndRenderいます。そのプレースホルダで実装するオーバーライドをカスタム機能をHtmlTextWriter由来のクラスです。
EDIT2:時には奥高尾にひっそりと建つ料亭。定例 常に サーバーを利用管理などの容器。さんやっていく。制御できます。Add()、その描画コンテナです。うことがあったりしてい:
writer.AddAttribute(HtmlTextWriterAttribute.Class, "myContainerClass");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
// do some stuff, .RenderControl on some other controls, etc.
writer.RenderEndTag();
このように、このラーニングによる正しいhtmlの場合においてもhtmlの部変化の原因とな場所だとは思いませんでしたハードコードされた文字列です。
他のヒント
性能的にこれを必要とする文字列するものではありませんが、行われます。 HtmlTextWriter
書き込みに直接出力バッファです。 StringBuilder
一方、独自のバッファです。をご利用いただきます ToString
の StringBuilder
, 新しいstringを構築しますので出力バッファへ書き込まれたよ output.Write
.すなわれます。
しないほうがいいと思いますべき呼ばれるようになりますよBeginRender/EndRender,私のページです。
見えないことに気づいたのかを文字列ビルダーを節約することが作品のHtmlTextWriters独自の方法。