34 messaggi dal 17 febbraio 2008
ciao a tutti...
vediamo se qualcuno riesce a darmi una mano :)
in una mia applicazione web gestisco l'urlrewrite... e fin qui tutto bene.
Ad un certo punto mi è venuto comodo utilizzare la proprietà Page.PreviousPage, ma non funziona perchè fa riferimento alla pagina "riscritta" (per es. /lombardia/) e non alla pagina reale (es. ricerca.aspx).
come posso passargli alla pagina chiamata che la PreviousPage è "ricerca.aspx" e non "/lombardia/" (che è l'url riscritto)?
grazie
daniele
dab75 wrote:
come posso passargli alla pagina chiamata che la PreviousPage è "ricerca.aspx" e non "/lombardia/" (che è l'url riscritto)?

fintanto che PreviousPage è del tipo che ti aspetti, dovrebbe funzionare, perchè al PostBack vengono inviati i dati alla pagina risultante. io resto dell'idea che benchè apprezzabile, sia molto meglio utilizzare Request.Form per leggere i valori passati in questo modo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
82 messaggi dal 01 luglio 2009
www.chida.it
io ho lo stesso problema, un cms aquistato da ditta esterna che fa url rewrite e mi semplificherebbe la vita poter usare il Page.PreviousPage, ma da errore perchè fa riferimento ad un url virtuale. Sto cercando di indicargli la Page.PreviousPag corretta, ma non ci riesco.

Qualcuno sa aiutarmi?

Request.Form mi piacerebbe usarlo, ma questi controlli di devexpres anche se dico id statico alla fine passa un post costruito ctl00$PHContent$cbSale
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

chida ha scritto:

ma da errore perchè fa riferimento ad un url virtuale

Esatto, asp.net cerca quel percorso su disco, come se esistesse un file fisico con quel nome. Ma ovviamente non lo trova, e va in errore.
A questo punto pensavo di poter ingannare asp.net con un VirtualPathProvider ma è una strada senza uscita perché se il percorso orginale non ha un'estensione è impossibile mapparlo al PageHandlerFactory. (Cioè, magari la pagina la trova ma poi non riesce ad istanziarla).

Allora ho pensato che forse si potrebbe risolvere il problema a monte.
Se ci fai caso, nell'output di pagina appare un campo hidden chiamato __PREVIOUSPAGE. Eccone uno di esempio:

<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="ngEp2YP6IRx88bdSkUSzYpROdpVBPV97TOqceYKSEBJsKvmtdwIxvzK6gf_shCbmyB-A2lV_p4gCm6berZHosZwVwAkRM0emw9xPn17nM601" />
Il percorso virtuale è memorizzato lì dentro, sarebbe l'ideale se lo si potesse riscrivere ma è crittato e questo rappresenta una difficolta in più.

Procediamo per gradi, vedrai che si riesce a risolvere.
Per prima cosa bisogna che troviamo un sistema per riscriverlo. L'oggetto Response dispone di una proprietà Filter che ti dà un'opportunità per analizzare (ed eventualmente manipolare) l'ouput HTML prodotto dalla pagina, prima che venga inviato al client.

Leggi questo articolo di Andrea Zani, ti mostra come puoi modificare l'output.
http://www.aspitalia.com/articoli/asp.net/responsefilter.aspx

In teoria può funzionare: mi estrapolo il valore del __PREVIOUSPAGE con un'espressione regolare, lo modifico e poi lo sostituisco a quello originale.

Resta il problema della crittografia. Una pagina Asp.Net usa il suo metodo EncryptString per produrre quelle stringhe ma sfortunatamente non lo puoi usare perché è un metodo internal.
Allora ho provato a cercare su internet una funzione che potesse produrre le stesse stringhe crittografate. C'è, eccola qui:
http://www.codeproject.com/Articles/36822/ASP-NET-data-encryption-decryption-made-easy

Ora hai tutti gli strumenti per manipolare il __PREVIOUSPAGE e fare in modo che in esso compaia sempre il nome di un file fisico, anche se la richiesta web usava uno dei percorsi sottoposti ad url rewriting.

Anche un altro utente il mese scorso ha avuto la tua stessa necessità e, siccome sembra un problema comune, ho preparato questo progetto da scaricare. Contiene né più né meno quello di cui ti ho parlato ora.
Progetto Routing-PreviousPage

ciao
Modificato da BrightSoul il 30 giugno 2012 13.30 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.