mercoledì 25 febbraio 2009

Finestre modali (window.showModalDialog) e problema di cache

Quando si utilizzano le finestre modali (ovvero finestre con il focus esculivo) in Asp.Net ed in tali finestre si utilizzano dati prelevati da un DataBase, si verifica un piccolo "problema": i dati vengono caricati da db solo alla prima apertura della pagina. Se chiudiamo la finestra e la riapriamo i dati non verranno ricaricati ma saranno presi dalla cache.

Per ovviare a questo problema, bisogna inserire nel page load della pagina che verrà utilizzata come finestra modale le seguenti righe di codice:


Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetExpires(DateTime.Now - New TimeSpan(1, 0, 0))
Response.Cache.SetLastModified(DateTime.Now)
Response.Cache.SetAllowResponseInBrowserHistory(False)




Ricordo che, per richiamare la finestra in modo che sia modale, si deve utilizzare questa un metodo javascript:

hlkNuovaFinestra.Attributes.Add("onclick", "javascript: window.showModalDialog('PaginaDaAprire.aspx', null, 'status:no; dialogWidth:500px; dialogHeight:400px; dialogHide:true; help:no; scroll:no;')"

In questo esempio, viene aperta una finestra modale di 400x500 pixel, senza barra di stato e senza bottoni e scroll semplicemente cliccando sull'HyperLink denominato hlkNuovaFinestra.

1 commento:

Anonimo ha detto...

Ottimo! Funziona perfettamente.
Grazie.