Espressioni inline in Asp.NET
Asp.NET mette a disposizione diverse espressioni inline che in pratica consentono di eseguire codice direttamente dalla pagina.
In questo articolo vi introduco al loro uso, considerando però che è solo una introduzione.
Vi riporto anche degli esempi, tutti in Visual Basic.
<%...%> incorporamento blocchi di codice
Viene utilizzato per mantenere la compatibilità con le versioni precedenti con ASP classico e può eseguire istruzioni di programmazione e chiamare le funzioni nella classe della pagina corrente durante la fase di rendering della pagina.
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<% For i As Integer = 16 To 24 Step 2%>
<div style="font-size: <% Response.Write(i)%>">
Hello World<br />
</div>
<% Next%>
</form>
</body>
</html>
Il suo uso è sconsigliato perchè di difficile lettura per chi non è il creatore del progetto.
<%=...%> visualizzazione espressione
E' un equivalente del blocco di codice incorporato che contiene solo l'istruzione Response.Write(…).
<%@ Page Language="VB" %>
<html>
<body>
<form id="form1" runat="server">
<%=DateTime.Now.ToString() %>
</form>
</body>
</html>
<%@...%> direttiva espressione
Specifica le impostazioni utilizzate dalla pagina e dai compilatori del controllo utente durante l'elaborazione delle pagine Web Form di ASP.NET (aspx) e i file del controllo utente (ascx).
Il Framework di pagine Asp.NET supporta le direttive riportate di seguito:
@ Page | Definisce gli attributi specifici della pagina vengono utilizzati dal compilatore e dal parser di pagine ASP.NET. Possono essere inclusi solo nei file aspx. * Questo nome di direttiva può essere utilizzato solo nelle pagine Web Form di ASP.NET. |
@ Controllo | Definisce gli attributi specifici del controllo vengono utilizzati dal compilatore e dal parser di pagine ASP.NET. Possono essere inclusi solo nei file ASCX (controlli utente). * Questo nome di direttiva può essere utilizzato solo nella finestra di dialogo utente controllare i file. |
@ Import | Importa in modo esplicito uno spazio dei nomi in una pagina o in un controllo utente. |
@ Implements | Indica in modo dichiarativo che una pagina o un controllo utente implementa un'interfaccia .NET Framework specificata. |
@ Register | Associa alias agli spazi dei nomi e con i nomi di classe. In questo modo i controlli utente e controlli server personalizzati deve essere eseguito il rendering vengono inclusi in una pagina richiesta o un controllo utente. |
@ Assembly | Collega un assembly alla pagina corrente durante la compilazione. Rende le classi e interfacce tutti dell'assembly disponibili per l'utilizzo nella pagina. |
@ Master | Identifica una pagina master ASP.NET. |
@ WebHandler | Identifica una pagina ASP.NET IHttpHandler. |
@ PreviousPageType | Fornisce un modo per ottenere la tipizzazione forte alla pagina precedente quando vi si accede tramite la proprietà PreviousPage. |
@ MasterType | Assegna un nome di classe per la proprietà master di una pagina ASP.NET. Fornisce un modo per creare un riferimento fortemente tipizzato alla pagina master ASP.NET. |
@ OutputCache | Controlla in modo dichiarativo i criteri di una pagina o di un controllo utente di inserimento nella cache di output. |
@ Riferimento | Collega in modo dichiarativo una pagina o un controllo utente per il controllo di pagina o utente corrente. |
<%#...%> direttiva di associazione espressione
Crea l'associazione tra una proprietà del controllo server e un'origine dati quando viene chiamato il metodo DataBind del controllo di questo controllo server nella pagina.
<%@ Page Language="VB" %>
<script runat="server">
Protected Function SayHello() As String
Return "Hello World"
End Function
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
lblHello.DataBind()
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<asp:Label ID="lblHello" runat="server" Text="<%# SayHello%>"></asp:Label>
</form>
</body>
</html>
<$%...%> generatori espressioni
Il Generatore di espressioni viene utilizzato per impostare i valori delle proprietà del controllo in base alle informazioni contenute in configurazione di un'applicazione o i file di risorse.
La sintassi di base è:
< % $ Espressione Prefix: Espressione Valore % >
Dove ill segno di dollaro ($) indica ad Asp.NET che l'espressione riportata di seguito è un generatore di espressioni.
Il prefisso di espressione definisce il tipo di espressione, ad esempio AppSettings, ConnectionStrings o risorse.
Inoltre, è possibile creare e definire il proprio Generatore di espressioni. Il valore dell'espressione che segue i due punti (:) è ciò che Aap.NET verrà effettivamente utilizzato come valore di una determinata proprietà.
Vediamo come ottenere il copyright dal nodo AppSettings del Web.config.
Nodo AppSettings:
<appSettings>
<add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>
Generatore espressioni nel Web Form Asp.NET:
<div id="footer">
<asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>
<%--...--%> commenti
Il blocco di commenti del lato server consente di incorporare commenti di codice in qualsiasi posizione dell'origine HTML delle pagine Web Form di ASP.NET (tranne all'interno di blocchi di codice <script>).
Qualsiasi contenuto tra i tag di apertura e chiusura del blocco di commenti del lato server non verrà elaborato sul server o non verrà eseguito il rendering nella pagina.
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strName As String
strName = Session("userName")
lblUserName.Text = strName
End Sub
</script>
<html>
<body>
<form id="form1" runat="server">
<%-- Label for UserName --%>
<asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
</form>
</body>
</html>
Commentami!