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


102

いつ、どこで、 LITERALを制御しますLABEL

私が理解しているように、違いはこれです:A LABEL<SPAN>は追加されたタグを介してスタイルを設定できます。

私は個人的<SPAN>に、HTMLにタグを追加するのは非常に煩わしく、ASPを介してスタイルを実際に適用することはないので、LITERALほとんどの場合にsを使用する必要があるようです...が心配です。他にの考慮事項や利点を知らないうちにLABELを使用します。

スタイルを適用しない場合、LABELsをLITERALs に置き換えるのは100%良いですか?その他の考慮事項はありますか?

回答:


126

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

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

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


1
それで、ここで念のために、他に考慮すべきことは何もないのですか?「主な違いは...」と書いていただいたのでお願いします。明らかに、私は主な違いには興味がありません。ありがとう。
チャックルバット

2
@Django:Chris Marisicの答えは本当に重要です。LabelHTML <label>要素が必要な場合は、常にASP.Net コントロールを使用する必要があります。それとは別に、ラベルはの間<spans>でテキストをレンダリングしますが、リテラルはそうではありません。リテラルを使用すると、テキストのレンダリング方法をより詳細に制御できます。どちらのコントロールにも特別なイベントはありません。その内容には、コードビハインドでまったく同じ方法で(Textプロパティを通じて)アクセスできます。
Graham Clark

2
チェックボックス!RADIO-BUTTONS!Labelコントロールを使用する場合AssociatedControlIDは、ラベルが関連付けられているチェックボックスまたはラジオボタンのID を使用して属性を追加できます。これにより、ラベルをクリックすると、関連するコントロールがアクティブになります。クリック可能なターゲット領域を大きくすると、ユーザーインターフェイスも使いやすくなります。
ハリーペコネン2017年

34

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

<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テキストボックスをターゲット属性をです。ユーザーがラベルをクリックすると、自動的にカーソルがテキストフィールド内に設定されます。

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


19

ここに画像の説明を入力してください

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

このビデオを見るこれらの追加タグについて説明するを。

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

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


3

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

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

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

たとえば、次の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

したがって、任意のスタイルをthanに適用する場合は、Labelコントロールを使用し、そうでない場合はLiteralコントロールを使用します。このため、Labelコントロールと比較すると、Literalコントロールは軽量のコントロールです。

参考:リテラルコントロールクラスの継承階層は(オブジェクト=>コントロール=>リテラル)で、ラベルコントロールの場合、階層は(オブジェクト=>コントロール=> WebControl =>ラベル)です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.