BuildProvider, ExpressionBuilder e VirtualPathProvider

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Espressioni nel markup: ExpressionBuilder

Durante la procedura di parsing delle pagine .aspx e .ascx, il motore è in grado di processare una sintassi speciale, delimitata da <%$ %>, utilizzabile solamente per l'assegnazione di valori a proprietà dei controlli presenti. In questo particolare markup è possibile inserire un'espressione, nella forma prefisso:valore, e il suo contenuto è processato per la produzione di codice come espressione da assegnare alla proprietà.

L'esempio seguente utilizza tale sintassi, con il prefisso AppSettings, per recuperare il valore della chiave "prova" presente nel file web.config:


Esempio 14.13
<asp:Literal runat="server" Text="<%$ AppSettings:prova %>" />

L'azione congiunta di BuildProvider e ExpressionBuilder porta alla creazione automatica del seguente codice di istanza del controllo:


Esempio 14.14 - VB
Dim __ctrl As New Literal()

__ctrl.Text = Convert.ToString( _
                AppSettingsExpressionBuilder.GetAppSetting( _
                "prova", GetType(Literal), "Text"));

Esempio 14.14 - C#
Literal @__ctrl = new Literal();

@__ctrl.Text = Convert.ToString(
                  AppSettingsExpressionBuilder.GetAppSetting(
                  "prova", typeof(Literal), "Text"));

Ogni prefisso identifica la classe incaricata a generare l'espressione che fa da parametro a Convert.ToString e questa selezione viene effettuata in base alla mappa expressionPrefix/type contenuta sempre nel file web.config.


Esempio 14.15
<configuration>
  <system.web>
    <compilation>
      <expressionBuilders>
        <add expressionPrefix="AppSettings" type="System.Web.Compilation.AppSettingsExpressionBuilder" />
      </expressionBuilders>
    </compilation>
  </system.web>
</configuration>

Nello spirito di ASP.NET 2.0 è possibile, anche in questo caso, generare un'espressione in funzione di un prefisso personalizzato, creando una classe che erediti da ExpressionBuilder. Il metodo principale da sovrascrivere è GetCodeExpression nel quale si deve fare uso di CodeDOM per restituire la rappresentazione del codice da generare.

Il vantaggio che si trae dall'uso di questa tecnica è soprattutto nella velocità di esecuzione, poiché rientra nel processo di compilazione, ed inoltre permette di inserire semplici espressioni senza dover ricorrere all'uso del code behind.

Oltre al prefisso AppSettings in ASP.NET 2.0 sono presenti:

  • ConnectionStrings: per recuperare stringhe di connessione dalla sezione
    /configuration/connectionStrings;
  • Resources: per recuperare dalle risorse contenuti per la localizzazione.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC