nella precedente puntata :) eravamo rimasti all' override della propietà ImageUrl che nella funzione di accesso (get) richiamava il metodo GetImageUrl. prima di procedere con l'analisi del codice del metodo descriviamo tre propietà che vengono utilizzate EnableFX e StorageKey
[DefaultValue(true)]
public bool EnableFX
{
get{return Convert.ToBoolean(ViewState["enableFX"]);}
set{ViewState["enableFX"] = value;}
}
protected object StorageKey
{
get {return this.Context.Cache[storageKeyField];}
}
[Editor("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public string ImageFile
{
get {return Convert.ToString(ViewState["ImageFile"]);}
set {ViewState["ImageFile"] = value;}
}
il metodo EnableFX recupera semplicemente il suo valore dal viewstate, se impostato su false il controllo ImageFX si comporta come un "normalissimo" WebControl Image
StorageKey è una propietà in sola lettura che restituisce un oggetto in casche (ci servirà molto più avanti)
ImageFile recupera il suo valore dal ViewState in più ha un attributo che indica all'ide del visual studio, di aprire l'editor degli url, insomma la finestra di dialogo dove è possibile selezionare l'url dell'immagine da visualizzae (e nel nostro caso anche da elaborare)
eccoci arrivati al metodo
private string GetImageUrl()
{
string url = "";
if (!EnableFX)
{
url = ImageFile;
}
else
{
storageKeyField = Query();
if (StorageKey == null)
{
return ImageFxBaseUrl + Query();
}
return ImageCacheBaseUrl + Query();
}
return url;
}
se EnableFx è false viene restituitito in nome del file così come in pratica abbiamo un controllo che si comporta esattamente come Image , altrimenti una variabile globale storageKeyField viene impostata sul valore restituito dal metodo Query, spiegherò più avanti (ovvero quando salveremo il frutto del nostro sacrificio nella cache).
se il contenuto della cache è nullo (StorageKey == null) ad ImageFxBaseUrl viene aggiunto query() altrimenti ImageCacheBaseUrl , ambedue sono costanti con i seguenti valori :
private const string ImageCacheBaseUrl = "imageCacheService.axd;
private const string ImageFxBaseUrl = "imageService.axd";
axd è l'estensione che permetterà di "accedere" al servizio
link alla puntata precedente
https://blogs.aspitalia.com/nostromo/post700.aspx
alla prossima puntata dove farò anche un riepilogo del codice scritto fino ad adesso
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Vi aspetto al WPC 2011, il 17 novembre 2011 alle 08:00
- PRISM comunicazione tra moduli, il 31 marzo 2009 alle 07:54
- Prism Region e View, il 19 marzo 2009 alle 23:07
- Composite Application Guidance (PRISM) primi passi, il 6 marzo 2009 alle 23:35
- Ottimizziamo le dimesioni del modulo (PRISM), l'8 marzo 2009 alle 17:13
- Blend ostaggio di WPF, il 30 luglio 2008 alle 15:26