Post data a nuova finestra

domenica 23 novembre 2008 - 13.08

allevaldo Profilo | Junior Member

Ciao a tutti. E' possibile inviare dati via POST a una nuova finestra?
Ho la mia pagin aspx che contiene un form. Alla pressione di un tasto, questa deve fare due cose: elaborare alcuni dati e "in teoria" inviare questa elaborazione a una nuova finestra (nuova istanza del browser) e effettuare il postback a un'altra pagina. Quindi non mi basta settare l'action del form perchè redirige già a un'altra pagina.
Mi servirebbe qualcosa tipo window.open(....) potendo passare dati in post... (mi basta solo si apra e riceva i dati... non mi interessa nessuna risposta da questa pagina)
è possibile?

kontax Profilo | Junior Member

Beh potresti usare il code-behind per salvare oggetti, anche complessi, ad esempio nella session. Poi li peschi nella nuova pagina, e magari rimuovi l'oggetto dalla sessione.
Sennò, se ti basta passare delle stringhe, quando fai il window.open,puoi usare il GET e mettere nell'url i parametri che ti servono.
sono le due prime soluzioni che mi vengono in mente..
Per chiarimenti chiedi pure, ciao

allevaldo Profilo | Junior Member

no... per forza devo passare i dati in post perchè la pagina che devo aprire è una applicazione già esistente e si aspetta un xml formattato come stringa...
ho trovato che è possibile usare l'activex InternetExplorer.Application e utilizzarne poi il metodo Navigate, ma mi dà dei problemi con i parametri che devo passare. Nel senso che la pagina si apre, ma se guardo la request, la collection Form è vuota.

kontax Profilo | Junior Member

Okk, allora è diverso..
Penso che tu debba usare HttpWebRequest. Su msdn: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
Per vedere come funziona, ci sono un sacco di esempi su google, cmq è abbastanza lineare come cosa.
Spero che questo ti aiuti,
Ciao

allevaldo Profilo | Junior Member

ma mi permette di arire una nuova istanza del browser e inviare dati?

a me non interessa nessuna risposta dalla pagina... solo aprire un nuovo browser con un link che conosco e passare dei dati...

kontax Profilo | Junior Member

Okk, ultimo tentativo da parte mia, poi se non funziona spero ti risponda qualcun'altro più esperto..
L'unico metodo che mi è venuto in mente è il seguente:
Pagina 1: Salvi i dati di cui vuoi fare il POST nella session. Poi apri una nuova pagina con window.open.
Session["dati_da_postare"] = "CIAO!"; //Sto aprendo la pagina Default2.aspx string Script_4 = "window.open('Default2.aspx','','',null);"; string MyKey = "KeyScript_1"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), MyKey, Script_4, true);
Pagina 2:Questa pagina è solo di appoggio, è lei che si occupa di postare i dati.
Per prima cosa recupera i dati dalla sessione e li riutilizza:
protected void Page_Load(object sender, EventArgs e) { if( Session["dati_da_postare"]!=null) { string dati_da_postare = Session["dati_da_postare"].ToString(); Session.RemoveAll(); TextBox1.Text = dati_da_postare; } }
Nella parte aspx invece,
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Così effettua sul caricamento della pagina il POST ad una nuova pagina "Default3.aspx", che è quella a cui vuoi fare arrivare in definitiva il POST.
Ho provato la cosa ed effettivamente la stringa originale arriva all'ultima pagina, e le pagine hanno il comportamento che mi hai descritto.

Spero che sia chiaro.
Lo so che è un metodo un po' del cazzo, ma migliori non me ne sono venuti in mente, più che altro a seconda di quello che devi mandare alla pagina, può essere abbastanza noioso.
Fammi sapere in ogni caso se la cosa ti va bene..
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5