Condividi tramite


Cenni preliminari sulle espressioni ASP.NET

Aggiornamento: novembre 2007

Le espressioni ASP.NET forniscono una modalità dichiarativa per impostare le proprietà dei controlli in base alle informazioni valutate in fase di esecuzione. È ad esempio possibile utilizzare le espressioni per impostare una proprietà su valori basati sulle stringhe di connessione, impostazioni di applicazione e altri valori contenuti nei file di risorse e di configurazione di un'applicazione. Le espressioni vengono valutate in fase di esecuzione quando vengono analizzati gli elementi dichiarativi della pagina e il valore rappresentato dall'espressione viene sostituito con la sintassi dell'espressione. Poiché le espressioni vengono valutate durante l'analisi, non è possibile crearle dinamicamente nel codice.

Le espressioni vengono comunemente utilizzate nei controlli origine dati per fare riferimento a una stringa di connessione. Anziché includere direttamente la stringa di connessione nel controllo origine dati come valore di proprietà, è possibile utilizzare un'espressione che specifica la posizione della stringa di connessione all'interno del file di configurazione. In fase di esecuzione, l'espressione viene risolta leggendo la stringa di connessione dal file di configurazione. È possibile utilizzare le espressioni per qualsiasi impostazione di proprietà che debba essere risolta in fase di esecuzione anziché impostata come valore statico.

Grazie alle espressioni, la gestione delle applicazioni risulta agevolata per tre motivi:

  • È possibile ridurre il codice dell'applicazione facendo riferimento alle informazioni dinamiche in modo dichiarativo. In questo modo si evita di scrivere codice per impostare i valori delle proprietà in fase di esecuzione.

  • È possibile riutilizzare la stessa impostazione in più controlli. Se, ad esempio, si memorizza una stringa di connessione nel file Web.config e si utilizzano le espressioni per fare riferimento alla stringa di connessione nelle pagine, si modifica la stringa di connessione in una sola posizione centralizzata anziché in ogni controllo che la utilizza.

  • È possibile memorizzare nel file Web.config dati sensibili quali le credenziali della stringa di connessione o altri dati dell'applicazione e quindi crittografare i dati.

  • Se si utilizza una finestra di progettazione visiva quale Visual Studio, è possibile usufruire degli strumenti di tale finestra per la generazione delle espressioni.

Le espressioni sono inoltre estensibili ed è possibile definirne la sintassi. È quindi possibile creare espressioni che consentono di chiamare il gestore delle espressioni personalizzato per la restituzione di un valore che utilizza la logica personalizzata.

Sintassi di base

La sintassi di base di un'espressione ASP.NET è la seguente:

<%$ expressionPrefix: expressionValue %>

Il simbolo di dollaro ($) indica ad ASP.NET l'inizio di un'espressione. Il prefisso dell'espressione ne indica il tipo, ad esempio AppSettings, ConnectionStrings o Resources. Dopo i due punti (:) viene fornito il valore effettivo in cui ASP.NET risolverà l'espressione.

La sintassi dell'espressione non è associata a un linguaggio .NET specifico. È possibile utilizzare la stessa sintassi per le espressioni in Visual Basic, C# o qualsiasi altro linguaggio di programmazione nelle pagine ASP.NET.

Stringhe di connessione

Le espressioni vengono comunemente utilizzate per impostare la proprietà relativa alla stringa di connessione di un controllo, ad esempio il controllo SqlDataSource, in base al valore di una stringa di connessione memorizzata nel file Web.config. Si supponga, ad esempio, di avere il controllo SqlDataSource seguente con un attributo relativo alla stringa di connessione:

<asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>

Il codice evidenziato mostra un'espressione racchiusa tra virgolette che indica il valore dell'attributo. Tale espressione fa riferimento a una stringa di connessione denominata "NorthwindConnectionString1" e definita nell'elemento connectionStrings del file Web.config. L'elemento connectionStrings può essere simile al seguente:

<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <!-- additional settings -->
</configuration>
Nota:

Per una maggiore protezione, si consiglia di crittografare la sezione del file di configurazione contenente stringhe di connessione. Per informazioni dettagliate, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta. Nell'esempio precedente la sezione configuration del file di configurazione non è crittografata per maggiore chiarezza.

A ogni stringa di connessione viene assegnato un nome, utilizzabile in un'espressione per farvi riferimento all'interno delle pagine ASP.NET.

Impostazioni dell'applicazione

Oltre che per le stringhe di connessione, è possibile utilizzare le espressioni per fare riferimento a impostazioni dell'applicazione definite in un file di configurazione accessibile al sito Web. Si supponga, ad esempio, di utilizzare spesso stringhe, come il messaggio relativo al copyright del sito, memorizzate nella sezione appSettings del file Web.config, simili alle seguenti:

<appSettings>
  <add key="copyright" value="(c)Copyright 2004 Northwind Traders"/>
</appSettings>

All'interno delle pagine ASP.NET è possibile fare riferimento al valore utilizzando un'espressione simile alla seguente:

<%$ AppSettings: copyright %>

In tal modo è possibile gestire nel file di configurazione gli elementi utilizzati più di frequente anziché modificare lo stesso testo in ogni pagina.

Visualizzazione di contenuto statico con le espressioni

Se si desidera utilizzare un'espressione come valore statico in una pagina o in un controllo, specificare un'espressione come parte di un controllo server ASP.NET. Una strategia tipica consiste nell'aggiungere un controllo Literal ed impostarne la proprietà Text su un'espressione. Ad esempio, per inserire il testo delle informazioni sul copyright nella parte inferiore di tutte le pagine:

<p align="center">

<asp:Literal text="<%$ AppSettings: copyright %>"/>

</p>

File di risorse

Oltre ai valori contenuti in un file di configurazione, è possibile visualizzare valori memorizzati nei file di risorse, con estensione resx o resource. I file di risorse vengono utilizzati, in genere, per memorizzare informazioni relative a una specifica lingua o combinazione di lingua e paese. Utilizzando file di risorse ed espressioni, è possibile creare una pagina Web contenente testo in diverse lingue a seconda dei valori determinati in fase di esecuzione, come l'impostazione relativa alla lingua e al paese contenuta nel browser o un'opzione di lingua esplicita fornita dall'utente.

Durante la localizzazione automatica del contenuto, ad esempio, è possibile impostare la proprietà Text di un controllo server utilizzando la sintassi dell'espressione, come nel seguente esempio:

<asp:Label id="label1"  text="<%$ Resources: Messages, ThankYouLabel %>" />

Nella cartella App_GlobalResources possono essere contenuti file di risorse denominati Messages.resx, Messages.es.resx, Message.de.resx e così via, ovvero un file di risorse Messages per ogni lingua che si desidera supportare. Il file Messages.resx rappresenta la risorsa neutra (fallback) utilizzata in assenza di impostazioni cultura esplicite. In tale file può essere presente una voce simile alla seguente:

<data name="ThankYouLabel"><value>Thank you very much!</value></data>

È possibile avere voci simili in altri file di risorse, con le stringhe tradotte nel modo appropriato per la lingua rappresentata da tali file. Per ulteriori informazioni sull'uso delle espressioni per le risorse e per la localizzazione, vedere Cenni preliminari sulle risorse delle pagine Web ASP.NET.

Vedere anche

Concetti

Cenni preliminari sulla sintassi delle pagine Web ASP.NET

Altre risorse

Sintassi dei file di configurazione di ASP.NET