2016-06-14 19 views
10

Quando uso il completamento automatico in VisualStudio 2010 all'interno della mia applicazione .aspx, ci sono diversi completamenti di default alla chiusura tag di controllo:ASP.NET tag di chiusura

<asp:CheckBox /> 
<asp:Label></asp:Label> 

C'è una spiegazione per questo comportamento?

<asp:CheckBox></asp:CheckBox> 
<asp:Label /> 

Non sarebbe valido.

risposta

7

La chiusura etichetta è come quella

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

perché di solito si digita qualcosa tra

<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label> 

che non è il caso di casella, che si digita all'interno di esso

<asp:CheckBox runat="server" Text="enable" ID="cbOne" /> 

Abbiamo in entrambi gli elementi il ​​campo Text, perché su quello che preferiamo scrivere side ... Guarda questo esempio, su Label o su altri controlli simili il testo che potremmo dover scrivere potrebbe includere caratteri non consentiti all'interno della Text Property, magari uno stile css complesso o cosa mai ... Il check scatola dall'altra parte è solo includono un piccolo testo (sì, no, qualcosa di simile)

<asp:Label ID="lblLabel" runat="server"> 
    This is a <b>"label"</b> 
    <br />And one more line 
</asp:Label> 

and more example that compiles 

<asp:Label ID="lblLabel" runat="server"> 
    This is a <b>"label"</b> 
    <br />And one more line 
    <asp:Literal runat="server" ID="ltrOneMore">One more Control Inside</asp:Literal> 
</asp:Label> 


---but this is not compile-- 

<asp:Label ID="lblLabel2" runat="server" 
    Text="This is a <b>"label"</b> 
    <br /> and one more line" 
    /> 

alla fine ultimo è una decisione che le marche fanno - forse abbiamo bisogno di chiedere loro il vero motivo reale .

Ora, questo è, inoltre, non compilare la casella di controllo

<asp:CheckBox runat="server" ID="cbMyChbx">one<asp:CheckBox> 

quando è il rendering sulla pagina è utilizzare due controlli, un ingresso e un'etichetta, in modo che forse ha bisogno di aiutare l'utente a capire che il testo non sta andando sul controllo di input.

+0

ma il between_ _something è la proprietà di testo esistente al 'asp: checkbox' troppo –

+0

Questa risposta spiega per esempio un 'GridView' o' Panel' perché lì devi scrivere altri controlli all'interno di quelli. Per 'Label' puoi anche scrivere' 'come Senthil Natarajan menzionato –

+0

@Shneeg Sì, ma all'interno di un'etichetta, o un valore letterale, potrebbe essere necessario inserire alcuni controlli html (ad esempio, grassetto, corsivo) che è necessario scriverli. Il '[ParseChildren (false)]' è il modo in cui esegui quella programmazione, non il motivo per cui lo inserisci con vero o falso. Farò un piccolo aggiornamento ora – Aristos

5

<asp:CheckBox /> Poiché l'elemento non ha contenuto, è possibile chiudere il tag con /> invece di utilizzare un tag di chiusura separata

<asp:Label></asp:Label> or <asp:Label /> 

Visualizza testo statico su una pagina Web Form e vi permette di manipolarlo programmaticamente.

Per saperne di più su di esso Web Server Control

7

Questo perché il controllo di ASP.NET Label è decorato con la ParseChildrenAttribute, con ParseChildren(false) mentre CheckBox non è.

Si può sostenere lo stesso comportamento whith i controlli personalizzati, ad esempio, con il seguente codice, Visual Studio si comporterà come etichetta se si utilizza MyControl nell'editor modulo web:

[ParseChildren(false)] 
public class MyControl : WebControl 
{ 
    ... 
} 
1

Tutte le risposte sopra sono validi, ma qualcosa in più. Tutti i controlli asp vengono infine visualizzati come controlli HTML e questo definisce anche il comportamento dei controlli asp. Ad es.non è necessario che il testo in un'etichetta viene sempre impostato come

<asp:Label runat="server" ID="lblOne">better start programming now</asp:Label> 

può essere fatto come segue

<asp:Label runat="server" ID="lblOne" Text="better start programming"></asp:Label> 

ora entrambi sono formato corretto, quindi non è valido dire che qualsiasi controllo che ha bisogno del contenuto avrà un tag di chiusura separato. Dipende anche da come viene visualizzato in HTML. per esempio per default asp Label è reso come span e non è conforme agli standard XHTML. Spero che questo chiarisca, pensa sempre a come sarà reso e ASP cerca di aderire a ciò che alla fine sarà reso.

applausi

+0

come su ' meglio iniziare a programmare ora' –

+0

qual è la tua domanda? – snit80

+0

perché c'è una scelta se non è possibile utilizzare entrambi contemporaneamente? –

Problemi correlati