il metodo GetImageUrl()

di Marco Leoncini, in work in progress,

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

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese