3

asp:labelとhtmlの違いは何labelですか?

最初のものはサーバー上でレンダリングされるので、基本的にスパンタブを返しますが、その用途は何ですか? HTML タグを使用したい場合と、どのような場合にasp:label. ASP コントロールとして配置すると、プログラムでアクセスできることはわかっていますが、純粋に UI の設計に関して 2 つの違いは何ですか?

4

1 に答える 1

9

asp:Label の "AssociatedControlID" 属性値がページ上のフォーム コントロールの ID に設定されている場合、実際には HTML ラベル コントロールとしてレンダリングされます ("for" 値は同じコントロールのクライアント ID に設定されます)。クライアントにレンダリングするとき。

HTML ラベル コントロールは、フォーム コントロールの目的をユーザーに説明するフォーム コントロール (つまり、入力、選択、またはテキスト領域) のラベル/キャプションを提供するように厳密に設計されています ( https://developer.mozilla.org/en参照)。 -US/docs/HTML/Element/label )。ラベルは通常、入力の ID である「for」属性を使用して特定の入力に (強く) 関連付けられます。これは、テキストとコントロールの近接性のみに基づいて関係を解釈できないアクセシビリティの必要があるユーザーにとって特に便利です。いくつかのテキストボックスを持つフォームを想像してみてください。HTML ラベル コントロールは、このコンテキスト以外の一般的なテキストには使用されません。

asp:Label の "AssociatedControlID" 属性に値がない場合、コントロールは単にテキストを含むスパン コントロールとしてレンダリングされます。一部の開発者は、asp:Labels を使用してテキストをページに出力し、コントロールに 2 つの目的を与えます (対応する HTML とは異なります)。個人的には、この目的で asp:Literals を使用することを好みます。これにより、含まれるマークアップをより細かく制御できるからです。

ネイティブの HTML ラベル コントロールではなく asp:Label を選択する理由は、サーバー イベントに応じてテキストや CssClasses を変更するなど、サーバー側のコードを使用して簡単に対話できるためです。また、サーバー ID を次のように入力できます。クライアントの「for」値でクライアント ID として自動的にレンダリングされる「AssociatedControlID」値 (たとえば、「TextBox1」ではなく「ct100_MainContent_TextBox1」と表示される)。

于 2013-01-13T01:02:21.933 に答える