Nello script #746 abbiamo visto come costruire un ExpressionBuilder per recuperare stringhe internazionalizzate da database utilizzando la nuova sintassi offerta.
ASP.NET 2.0 supporta una nuova modalità di esecuzione delle pagine, chiamata no-compilation.
Ciò vuol dire che ad ogni richiesta viene effettuata un nuovo parsing e se non vi è più codice autogenerato anche il nostro expression builder non può più funzionare. Ecco quindi che sovrascrivendo la proprietà SupportsEvaluate possiamo indicare al motore che il nostro builder supporta anche questa nuova modalità. In caso contrario il parser generà un eccezione simile a questa:
Cannot have the expression 'DBResources:WELCOME_MESSAGE' that does not support evaluate in a non-compiled page.
Il valore da associare a Text è quindi un valore "valutato" sul momento ottenuto chiamando il metodo EvaluateExpression che restituisce il valore stesso e non più il codice da chiamare per ottenerlo.
Aggiungiamo quindi questi due nuovi membri alla nostra classe:
public override bool SupportsEvaluate { get { return true; } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { string key = entry.Expression.Trim(); return DBResourcesManager.GetResource(key); }
Ed in questo modo potremo far funzionare il nostro ExpressionBuilder anche in presenza dell'opzione no-compile.
Per lo script #746 si veda:
#746 - Un ExpressionBuilder per recuperare stringhe nazionalizzate da database
https://www.aspitalia.com/script/746/ExpressionBuilderRecuperareStringheNazionalizzateDatabase.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.