Nello script #618 abbiamo visto una tecnica che permette l'utilizzo di "alias" per le nostre pagine ASP.NET, usando la più semplice delle tecniche per assolvere a questo compito.
E' dunque chiaro il problema che tale tecnica comporta riguardo il PostBack, per cui ne vediamo una ulteriore che lo risolve, utilizzando un HttpHandler.
Nell'esempio precedente volevamo abbreviare l'url di una nostra pagina:
www.nomesito.xxx/articolo.aspx?codice=001
E volevamo utilizzare per chiamare ancora questa pagina l'url più semplice:
www.nomesito.xxx/articolo001.aspx
Innanzitutto è necessario modificare il web.config aggiungendo questa sezione:
<httpHandlers>
<add verb="*" path="articolo*.aspx" type="MyChangeUrl,Nome_assembly_Progetto" />
</httpHandlers>Quindi si deve creare una nuova classe che implementi l'interfaccia IHttpHandlerFactory:
Public Class MyChangeUrl
Implements IHttpHandlerFactory
Public Function GetHandler(ByVal context As HttpContext, ByVal requestType As String, ByVal url As String, ByVal path As String) As IHttpHandler Implements IHttpHandlerFactory.GetHandler
Dim pagina As String = context.Request.MapPath("articolo.aspx")
Return PageParser.GetCompiledPageInstance(url, pagina, context)
End Function
Public Sub ReleaseHandler(ByVal handler As IHttpHandler) Implements IHttpHandlerFactory.ReleaseHandler
End Sub
End ClassAdesso ogni pagina richiamata dal browser nel formato "articolo*.aspx" sarà reindirizzata ad "articolo.aspx" lasciando l'URL presente nel browser invariato anche in caso di PostBack.
Rimane il problema di prendere il codice dell'articolo interessato visto che esso non sarà più presente nella collection Request. Per far questo dobbiamo modificare la pagina "articolo.aspx" in modo che cerchi il parametro interessato direttamente dall'interno dell'URL:
sub Page_Load()
dim codice as string
codice=System.IO.Path.GetFileNameWithoutExtension(Request.Path).Substring(8)
' substring per prendere dal 8 carattere in poi, cioè il codice
' senza il suffisso .aspx
codice=codice.Substring(0,codice.indexOf(".")-1)
...
end subE con questo è tutto. Una tecnica facile, che al tempo stesso evita, per l'appunto, che ci siano problemi nel PostBack.
- #903 - Applicare le policy sui ruoli a SiteMap
- FtpDataSource: datasource per FTP
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- #944 - Inviare file di grandi dimensioni con un HttpHandler di ASP.NET
- #951 - Accedere ai dati con i Dynamic Data Controls di ASP.NET 3.5 SP 1
- Introduzione ad ASP.NET 3.5: novità e caratteristiche
- Parte 2 e 3 della serie sui custom control ASP.NET su MSDN
- #914 - Custom Control con il supporto al databind per ASP.NET 2.0
- Multi-threading: migliorare la performance delle applicazioni web
- #927 - Un HttpModule per passare automaticamente da HTTP a HTTPS
- Architettura del software: le applicazioni web a tre livelli
- Speciale Custom Control per ASP.NET
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.









Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
