web-dev-qa-db-ja.com

ASP.Net:リテラルとラベル

LITERALに対するLABELコントロールをいつ、どこで使用すべきかについて、いくつかの権威を聞きたかっただけです。

私が理解しているように、違いはこれです:LABEL<SPAN>追加されるタグ。

個人的には<SPAN>私のHTMLのタグは非常に迷惑で、ASPを介して実際にスタイルを適用しないため、LITERALsはほとんどの場合に使用すべきもののようですが...other私が知らないラベルを使用することに関する考慮事項または利点。

スタイルを適用しないのであれば、LABELsをLITERALsに置き換えることは100%大丈夫ですか?他の考慮事項はありませんか?

98
Chuck Le Butt

ええ、主な違いは、Literalコントロールはテキストをレンダリングするだけですが、Labelコントロールは<span>タグで囲むことです(AssociatedControlIDプロパティを使用しない限り、その場合、Labelコントロールは<label>タグをレンダリングします)。

そのため、ラベルのスタイルを簡単に設定できますが、テキストを挿入するだけの場合は、リテラルが最適です。リテラルコントロールには、テキストのレンダリング方法を制御する便利なプロパティ Mode もあります。 HTMLエンコードするか、変更せずにレンダリングするか、「サポートされていないマークアップ言語要素」を削除することができます。

スタイルを適用していない場合(たとえば、LabelCssClassプロパティを使用して)、LabelコントロールをLiteralコントロールに置き換えても問題ありません。

123
Graham Clark

次のようなコードがある場合

<asp:Label EnableViewState="false" ID="Label8" runat="server" 
        AssociatedControlID="txtEmail">Email Address:</asp:Label>

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

ラベル要素を使用するのが最適です。これは、ユーザーがラベルをクリックすると自動的にラベルがクリックされるように、正しいlabel属性を持つHTML for要素に正しく変換するためです。テキストフィールド内にカーソルを設定します。

それ以外の場合は、spanでテキストをラップすることがcssスタイリングに有益でない限り、リテラルを使用します。

33
Chris Marisic

enter image description here

単純なテキスト、フォーマットされたテキスト、またはHTMLテキストをそのまま表示するには、軽量であるため最初にリテラルで始まり、余分なSPANタグを出力しません。

このビデオ を参照して、これらの追加タグについて説明します。

ただし、リテラルにCSSを適用することはできません。Label1.Attributes.Addなどの属性をリテラルに追加することはできません。リテラルはSPANタグで囲まれていないため、コンテナー指向のものは実現できません。

また、多くのASP.NET Webformの人がデフォルトでラベルを選択して、ラベルがたくさんあるとHTMLが重くなる余分なSPANタグを生成することを知らずにテキストを表示するのを見るのは悲しいことです。

19

asp.netの差分b/wラベルとリテラルコントロール

ほとんどすべての点で、リテラルコントロールはラベルコントロールと同じです。これらのコントロールは両方とも、Webフォームにテキストを表示するために使用されます。 (Textプロパティは、HTMLまたは分離コードで設定できます。)

最大の違いは、Labelコントロールは、レンダリング時にテキストをspanでラップすることです。 Labelコントロールに適用されるすべてのスタイルは、stylespanプロパティを使用してレンダリングされます。

たとえば、次のHTML

<asp:Label ID="Label1" runat="server"  Text="Label Text"
ForeColor="Red" Font-Bold="true" ></asp:Label>

としてレンダリングされます

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

リテラルコントロールは周囲のタグを出力しないため、テキストはそのまま表示されます。

たとえば、次のHTML

<asp:Literal ID="Literal1" runat="server" 
Text="Literal Control Text"></asp:Literal>

としてレンダリングされます

Literal Control Text

そのため、ラベルコントロールを使用するよりもスタイルを適用する場合は、リテラルコントロールを使用します。このため、リテラルコントロールは、ラベルコントロールと比較すると、軽量のコントロールです。

参考:Literalコントロールクラスの継承階層は(Object => Control => Literal)です。Labelコントロールの場合、階層は(Object => Control => WebControl = >ラベル)

2
Rae Lee