2009-06-12 20 views
1

次の違いは何ですか?本当にASP.NETラベルにText属性が必要ですか?

<asp:Label runat="server">Hello World</asp:Label> 

<asp:Label runat="server" Text="Hello World"></asp:Label> 

更新:

彼らはまったく同じであれば、なぜ単一値のデータバインディングを使用している場合、正しく

<asp:Label ID="Label1" runat="server"> 
There were <%#transactionCount%> transactions today 
</asp:Label> 

バインドを行い、transactionCountに正しい値を表示し、 while ...

<asp:Label ID="Label1" runat="server" Text="There were <%#transactionCount%> transactions today"> 
</asp:Label> 

は、ページのtransactionCountの値を表示しませんか?再び更新


を私はリテラルコントロールを使用してについて行われている点を理解しています。私はそれに応じて顔を叩きますが、それでも問題は解決しません。おそらく解決策に近づいています。

私が使用している場合...

<asp:Literal ID="Label1" runat="server" Text="<%#transactionCount%>"></asp:Literal> 

...私はtransactionCountの値がウェブページに表示参照してください。

一方、単一値のデータバインドフィールドの前に任意の文字や単語を配置すると、

<asp:Literal ID="Label1" runat="server" Text="No. <%#transactionCount%>"></asp:Literal> 

... transactionCountが表示されません。

+1

これらは同じJoeです。パーサはそれらを同じように扱います。 –

+0

あなたは本当にこのためにリテラルを使うべきです - 別のポスターが言うように、ラベルはフォームフィールドにラベルを付けるためのものです。あなたが提供する文脈では意味的に正しいものではありません。 –

答えて

4

最終HTMLで同じものを表示します。ただし、Text属性は、コード内に表示されたテキストをプログラムで設定する場合に便利です。

+0

と残りのサーバーコントロールとの一貫性を追加 –

+0

答えをありがとう - しかし、私は彼らが単一値のデータバインディングのために同じように動作していることはわかりません。上記の質問を更新しました – Joe

2

はい、ITextControlインターフェイスを満たしていません。開発者の99%が間違ってLabelsを使用することを覚えておいてください。<%# Databind() %>ではなく、一般的に出力を保持するのにLiteralsを使用してください。ほとんどの場合、サーバー側のスパンは必要ありません。 1ラベルを使用する必要があります

は、フォームにラベルフィールドを作成することです:

<asp:Label runat="server" id="LabelForFirstName" Text="First Name:" AssociatedControlID="firstname /> 
<asp:TextBox runat="server" id="FirstName" /> 

は1に最初に名前タグと意味的に正しいHTMLに結び付けられたラベルを与えます。

0

テキストをHello Worldとして設定した場合、コード値ファイルからその値をプログラムで変更することはできません。

一方、あなたはmytxt.Text =「新しいテキスト」

として値を変更してみましょうwoukdしかし、彼らは同じようにレンダリングされます。

0

これらが異なる別の理由は、implicit localizationをサポートすることです。リソースファイルで、ID.Property(Label1.Textなど)を指定します。

関連する問題