この質問はリテラルvsラベルを指摘し、この質問はパネルVSを指摘します。PlaceHolderですが、ちょうど今日、実行時に生成されるHTMLマークアップを追加するためにPlacHolderとLiteralを使用することについて同僚と議論していました。どちらのコントロールも余分なマークアップを生成しませんが、生成されたマークアップをその場で追加するための適切なコントロールを探しています。この質問の答えは、生成されたマークアップを追加するために両方を使用することを示唆しているので、生成されたマークアップを追加するためだけにどちらの制御/アプローチを使用すべきか疑問に思っています。
2 に答える
どちらも独自のマークアップをレンダリングしません(これは非常に良いことです)。ただし、aにPlaceholder
は子コントロールが含まれる場合がありますが、aには含まれLiteral
ません。
比較すると、aには他のコントロールを含めることができますが、プロパティPlaceholder
はありません。Text
生成されたマークアップを追加するだけで、それ以上のことは何もしないために、どのコントロール/アプローチを使用すべきか疑問に思います。
「生成された」とは、最終結果が文字列であることを意味する場合、私はを使用しLiteral
ます。コントロールツリーを生成している場合は、それらのコントロールをに追加しますPlaceholder
。
または、サーバーコントロールの宣言を完全に省略したい場合は、次のようにします。
<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>
このために、aLiteral
はまだ内部で生成されていると思いますが、生成されたコンテンツをページ/コントロールのマークアップ部分と混合することができます(Razorと同様)。
PlaceHolder vs Literal for adding HTML
主な違いは、リテラルコントロールにText
プロパティ(およびモード)があり、これもビューステートに保存されることです。これPlaceHolder
は完全に空です。
したがって、リテラルコントロールを使用して文字列htmlコードを直接追加でき、PlaceHolderを使用して他のコントロールを追加できますが、直接htmlコードは追加できません。