2009-12-04 8 views
28

これらの2つのコントロールを適切に使用するにはどうすればよいですか?時々私はコードの背後にHTMLを構築します。時々私は空白を出力したい、と私はこのようなことをやってしまう。LiteralとLiteralControlのどちらを使うのですか?

const string twoSpaces = "  "; 
p.Controls.Add(new Literal { Text = twoSpaces }); 

または

const string twoSpaces = "  "; 
p.Controls.Add(new LiteralControl { Text = twoSpaces }); 

私の質問は、これは、これらのコントロールの適切な使用ですか?この方法で空白を追加すべきですか?いつ他のものを使うのですか?

私はおそらくCSSで何かをすることができることを実感しましたが、本当にこの2つのコントロールの目的が何であるかを知りたいと思っています。

答えて

34

リテラルはViewStateを使用し、ポストバック全体のプロパティの更新を覚えています。 LiteralControlは、すべてのポストバックにそのプロパティを設定する必要があります。

それ以外の場合は、リテラルを使用する場合は十分注意してください。リテラルタグでユーザー入力を表示できるようにすると、XSS攻撃を開始する可能性が非常に高くなります。

+3

+1。 HttpUtility.HtmlEncode()やより安全なMicrosoftのAnti-XSSライブラリから保護されていますが、クリスはLiteral/LiteralControlでレンダリングできるユーザー入力について非常に注意しています。 – Broam

9

Chris Pitmanは正しく回答しましたが、私は両方についていくつかの事実を追加したいだけです。

リテラルは、aspxページとコードビハインドの両方に追加できるコントロールです。

asp:Literal Text="text" runat="server"

しかしLiteralControlはなく、唯一の背後にあるコードに、aspxページに追加することができません。ですから、LiteralControlには、ページクラスに関連付けられたViewStateがありません。

関連する問題