Tag "speciali" ASP.NET


232

Qual è il nome ufficiale per i tag "speciali" ASP.NET come questo:

<%# %>
<%= %>
<%@ %>
<%$ %>

Non riesco a capire il nome concettuale o ben noto per questi, quindi ho problemi a cercare ulteriori informazioni. Come bonus, qualcuno può darmi una rapida rassegna di tutti i possibili "tag speciali" e cosa ognuno di loro fa (o indicarmi una risorsa)?


1
Microsoft li chiama anche blocchi di codice incorporati se contengono codice.
Robert Harvey,

Risposte:


350

Il nome ufficiale è " delimitatori di scripting lato server " o " espressioni inline ASP.NET ". La finestra di dialogo delle impostazioni di evidenziazione della sintassi di Visual Studio 2008 chiama questi "Script lato server HTML". I ragazzi di Microsoft li chiamano "crocchette di codice" nei loro blog.

  • <%@ %>è una direttiva per le pagine Web ASP.NET . Utilizzato per pagine e controlli per configurare le impostazioni del compilatore di pagine / controlli ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>è anche una direttiva di applicazione . Utilizzato per specificare le impostazioni specifiche dell'applicazione per global.asax. Distinto dalle direttive della pagina in quanto utilizza solo un set di tag diverso.
  • <% %>è un blocco di rendering del codice (per codice inline) . Una delle 4 forme di blocchi di codice incorporati . Utilizzato per l'inclusione del codice lato server nel Render()metodo ( <% x = x + 1; %>) della classe generata. Formato: singolo / multilinea o multiplo (ad esempio if/then/elseintervallati da HTML) ma non può essere utilizzato per dichiarare funzioni.
  • <%= %>è un blocco di rendering del codice (per espressioni incorporate) . Utilizzato come scorciatoia per<%Response.Write(value)%>
  • <%: %>(ufficiosamente un " blocco di codice di codifica HTML ") è uguale al precedente, ma l'output è codificato in HTML.
  • <%# %>è un'espressione vincolante per i dati . Usato per unidirezionale (sola lettura) o bidirezionale (aggiornabile) vincolanti mediante Eval, Xpath, Bind, o espressioni (ad esempio il valore selezionato di un controllo alla discesa). Associa le espressioni alle proprietà del controllo con associazione a dati tramite il markup dell'attributo del controllo o come tag separato che genera DataBoundLiteralControlun'istanza con il valore sulla sua Textproprietà. Le espressioni vengono valutate da un DataBindinggestore eventi per il controllo.
  • <%#: %>è un'espressione di associazione dati codificata HTML (nuova in ASP.NET 4.5). Unisce la funzionalità di <%# %>e <%: %>.
  • <%$ %>è un generatore di espressioni ASP.NET . Utilizzato per l'associazione delle espressioni di runtime per le proprietà di controllo tramite gli attributi dei tag del server. Utilizzato con AppSettings, ConnectionStringso Resources(o proprio interno personalizzato , ad esempio per l'uso code-behind proprietà). Queste assegnazioni vengono aggiunte al OnInit()metodo della classe generata.
  • <%-- --%>è un commento sul lato server . Utilizzato per escludere i contenuti dalla compilazione (e quindi genererà errori se si fa riferimento a un controllo commentato in code-behind). A differenza dei commenti HTML, il contenuto non verrà incluso nell'output.
  • <!-- #Include ... -->è una direttiva di inclusione lato server . Utilizzato per inserire il contenuto di un file nella pagina, nel controllo o nel file globale. Utile quando un controllo utente è eccessivo e non è possibile utilizzare una pagina master.

Esiste anche un blocco di dichiarazione del codice , il modulo finale di blocco del codice incorporato.

<script runat="server">
bool IsTrue() {
  return false;
}
</script>

Questo è usato per includere membri aggiuntivi (metodi ecc.) Alla classe generata dal markup ASP.NET. Questi sono sempre stati forniti "principalmente per preservare la retrocompatibilità con la tecnologia ASP precedente" e non sono raccomandati per l'uso.


1
Credo che ci sia un <% $ ...%> che si collega ai parametri di app / stringhe di connessione.
sisve

Non ne ho sentito parlare. Hai una fonte?
Sedat Kapanoglu,

3
Si chiamano espressioni ASP.NET. Vedere msdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka

7

Nessuna risposta per la tua domanda di nome, ma la pagina "Sintassi della pagina ASP.NET" di MSDN è piuttosto buona (o meglio, questa è la pagina di livello superiore; le pagine sottostanti forniscono maggiori informazioni).

EDIT: in precedenza avevo pensato che <%# ... %>non fosse incluso nell'elenco, ma ovviamente lo è, in Data-Binding Expressions. Doh.


Questo link al momento non funziona. Devi selezionare una versione di .NET framework prima di essa.
Sam

1
@ Sam: Ah, grazie - Penso che sia stato ritirato quando .NET 4.5 è uscito, per qualche motivo. Ho modificato il link.
Jon Skeet,

1
Pensavo che Jon Skeet non stesse sviluppando il web ...!
CodeArtist,

6

Ho sempre trovato questa pagina di avvio rapido molto utile, ogni volta che ho dei dubbi sulla sintassi lato server. Descrive in dettaglio 8 diversi stili di markup e fornisce esempi illustrativi di ciascuno, oltre a spiegare i pro ei contro.

Non menziona la direttiva a livello di Pagina, tuttavia, che IIRC è dettagliata altrove nella Guida introduttiva.

Naturalmente, questo è rilevante per ASP.NET 2.0.


Questa è una risposta solo link. Si prega di inserire le informazioni pertinenti.
zzzzBov,

1
il link è stantio :-(
Roland


6

I ragazzi di Microsoft li chiamano "pepite" o "pepite di codice" a volte.


0

Ho anche sentito queste chiamate "V stings", anche sul podcast StackOverflow.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.