2009-01-29 16 views
42

एएसपी.NET एप्लिकेशन के भीतर <label> टैग का उपयोग करने का सबसे अच्छा तरीका क्या है? मैं चाहता हूं कि यह एक्सएचटीएमएल वैध, सुलभ और उपयोग योग्य हो।एचटीएमएल लेबल टैग और एएसपी.NET

मैं समझता हूँ कि इष्टतम तरीका यह है:

<label for="Username">Username:</label> 
<input type="text" id="Username" runat="server" /> 

लेकिन अगर इसके बाद के संस्करण कोड एक ASP.NET उपयोगकर्ता नियंत्रण में है, इनपुट आईडी बदल जाएगा, जिसका अर्थ है लेबल के "के लिए" विशेषता बेकार है। मैं लेबल टैग को सर्वर नियंत्रण बना सकता हूं और कोड (Username.ClientID) में "for" विशेषता सेट कर सकता हूं लेकिन ऐसा लगता है कि इस तरह की एक साधारण चीज़ के लिए बहुत सारे काम हैं।

मैं भी इस HTML अतीत में प्रयोग देखा है:

<label> 
    <span>Username</span> 
    <input type="text" id="Username" runat="server" /> 
</label> 

इष्टतम दृष्टिकोण क्या है?

उत्तर

61

मैं इसके लिए <asp:Label ... AssociatedControlID="Username" ...> नियंत्रण का उपयोग करता हूं। उन्हें <label> टैग के रूप में प्रस्तुत किया जाता है और for उचित रूप से विशेषता सेट करता है।

ध्यान दें कि आप यदि आप चाहें तो लेबल नियंत्रण में भी घोंसला अन्य टैग कर सकते हैं:

<asp:Label ID="UsernameLabel" 
      Text="Username:" 
      AssociatedControlID="UsernameTextBox" 
      runat="server"> 
    <asp:TextBox ID="UsernameTextBox" runat="server" /> 
</asp:Label> 
+5

मैं भी इस दृष्टिकोण का उपयोग करता हूं लेकिन लेबल टैग के लिए हमेशा सक्षमViewState = "गलत" सेट करता हूं, खासकर यदि यह एक महत्वपूर्ण रूप है। मेरी राय में दृश्यमान जितना छोटा होगा। देखें http://stackoverflow.com/questions/113479/when-to-enable-disable-viewstate –

+0

सहमत हैं। यह अल्पसंख्यक के लिए छोड़ दिया गया था। –

+2

मुझे वेब में ViewState को बंद करना आसान लगता है। पृष्ठ सेटिंग्स कॉन्फ़िगर करें और इसे केवल उस नियंत्रण पर चालू करें जिसके लिए आपको इसकी आवश्यकता है। हां, व्यूस्टेट वास्तव में जोड़ता है और चीजों को धीमा कर देता है अगर आप इसे सभी नियंत्रणों के लिए छोड़ देते हैं। –

8

<asp:Label> सर्वर नियंत्रण का उपयोग करें। इसमें एक ऐसी संपत्ति है जिसका उपयोग आप संबंधित नियंत्रण आईडी सेट करने के लिए कर सकते हैं।

<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" /> 
<asp:TextBox ID="Text1" runat="server" /> 
6

मुझे लगता है कि ऐसा करने का सबसे आसान तरीका यह है।

<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label> 
<asp:TextBox ID="Username" runat="server"></asp:TextBox> 

संपादित करें: वाह .. एक मिनट के भीतर सभी एक ही जवाब। =)

0
<p><asp:Label ID="label1"   Text="Username:"   AssociatedControlID="txtUserName"   runat="server"> <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p> 
16

तुम भी इसे इस तरह लिख सकते हैं:

<label for="<%= Username.ClientID %>">Username:</label> 
<asp:TextBox ID="Username" runat="server" /> 

फिल Haack इस विषय पर एक blog post है

3

आप .NET 4 उपयोग कर रहे हैं तो आप अब ClientIDMode संपत्ति का उपयोग कर सकते स्थैतिक या अनुमानित आईडी का उपयोग करने के लिए एक या अधिक नियंत्रण कॉन्फ़िगर करने के लिए। ClientIDMode प्रॉपर्टी को टेक्स्टबॉक्स पर सीधे सेट किया जा सकता है या आप इसे किसी भी मूल नियंत्रण या युक्त पृष्ठ पर सेट कर सकते हैं।

<label for="Username">Username:</label> 
<asp:TextBox ID="Username" runat="server" ClientIDMode="Static" /> 

MSDN

3

आप एक लेबल चाहते हैं पर ClientIDMode बारे में अधिक पढ़ें, लेकिन एक और नियंत्रण AssociatedControlID एक में उपयोग करने के लिए लेबल ही

0

आप उपयोग कर सकते हैं की जरूरत नहीं है मेरी यह भी प्रयास करें और यह:

<asp:Label ID="Label1" runat="server" Text="label"></asp:Label> 

यह विजुअल स्टड है io, या कोई अन्य सॉफ़्टवेयर आपको देता है यदि आप लेबल खींचते हैं और छोड़ देते हैं।

संबंधित मुद्दे