11

この質問はリテラルvsラベルを指摘し、この質問はパネルVSを指摘します。PlaceHolderですが、ちょうど今日、実行時に生成されるHTMLマークアップを追加するためにPlacHolderとLiteralを使用することについて同僚と議論していました。どちらのコントロールも余分なマークアップを生成しませんが、生成されたマークアップをその場で追加するための適切なコントロールを探しています。この質問の答えは、生成されたマークアップを追加するために両方を使用することを示唆しているので、生成されたマークアップを追加するためだけにどちらの制御/アプローチを使用すべきか疑問に思っています。

4

2 に答える 2

14

どちらも独自のマークアップをレンダリングしません(これは非常に良いことです)。ただし、aにPlaceholderは子コントロールが含まれる場合がありますが、aには含まれLiteralません。

比較すると、aには他のコントロールを含めることができますが、プロパティPlaceholderはありません。Text

生成されたマークアップを追加するだけで、それ以上のことは何もしないために、どのコントロール/アプローチを使用すべきか疑問に思います。

「生成された」とは、最終結果が文字列であることを意味する場合、私はを使用しLiteralます。コントロールツリーを生成している場合は、それらのコントロールをに追加しますPlaceholder

または、サーバーコントロールの宣言を完全に省略したい場合は、次のようにします。

<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>

このために、aLiteralはまだ内部で生成されていると思いますが、生成されたコンテンツをページ/コントロールのマークアップ部分と混合することができます(Razorと同様)。

于 2013-03-10T15:47:50.250 に答える
6
PlaceHolder vs Literal for adding HTML

主な違いは、リテラルコントロールにTextプロパティ(およびモード)があり、これもビューステートに保存されることです。これPlaceHolderは完全に空です。

したがって、リテラルコントロールを使用して文字列htmlコードを直接追加でき、PlaceHolderを使用して他のコントロールを追加できますが、直接htmlコードは追加できません。

于 2013-03-10T16:06:31.043 に答える