koolmind ha scritto:
Per motivi di viario genere (richieste dall'alto dovre
) dovrei eliminare la visualizzazione del parametro, rendendo tutte le pagine visibili come http://www.sito.com/main.asp.
Sarebbe interessante capire i motivi di questa richiesta.
Nel senso che sarebbe abbastanza normale se tu al posto di "http://www.sito.com/main.asp?id=1234" volessi un url del tipo "http://www.sito.com/1234/main.asp" o "http://www.sito.com/1234.asp" (ad esempio per ottimizzazione per i motori di ricerca) e questo lo potresti ottenere con url rewriting (anche se con asp è un tantino più complicato che con .net)
Ma far sparire del tutto il parametro dalla query... che senso ha? Boh!
Come posso fare questo e al contempo riuscire ad indirizzare le varie pagine?
La soluzione più semplice da implementare che mi viene in mente è quella di passare il parametro in POST anziché in GET.
Questa soluzione, implementata con un po' di javascript, ti consente di modificare poco o nulla l'applicazione se non nella costruzione dei link.
Faccio un esempio per chiarire meglio (il codice è indicativo, non testato):
Quello che ora è semplicemente:
<a href="main.asp?id=1234">pagina 1234</a>
Deve diventare:
<a href="main.asp" onclick="gotoPage(1234, this.href); return false;">pagina 1234</a>
(NOTA: ricorda il "return false" nell'onclick altrimenti viene eseguito il comportamento normale del link, ovvero andare alla pagina specificata in href)
Dove "gotoPage" è una funzione javascript comune che fa una cosa di questo tipo:
function gotoPage(idValue, returnUrl)
{
var frm = document.createElement("form");
frm.action = returnUrl;
frm.method = "POST";
var id = document.createElement("input");
id.type = "hidden";
id.name = "id";
id.value = idValue;
frm.appendChild(id);
document.body.appendChild(frm);
frm.submit();
}
Nelle tue pagine lato server non dovrai far altro che recuperare il valore del parametro "id" da Request.Form anziché da Request.QueryString.
Si potrebbe forse trovare una soluzione per scrivere comunque l'ID nei link ipertestuali ma non farlo visualizzare nella barra indirizzi?
Tendenzialmente no. Otterresti l'effetto desiderato usando un semplice frameset ma... bleah!
HTH
Modificato da m.casati il 02 ottobre 2007 16.37 -