PostBackUrl e reperimento dati

mercoledì 21 novembre 2007 - 16.41

ravalon Profilo | Expert

Salve a tutti

Sto provando a passare i dati di due textbox da una pagina ad un'altra con postbackurl

la pagina chiamante ha queste due caselle

<asp:TextBox ID="txtPassword" runat="server" CssClass="TextBox" TextMode="Password" BorderStyle=Solid></asp:TextBox>
<br />
<asp:ImageButton ID="ImageButton1" runat="server" PostBackUrl="generali/login.aspx">


Nella pagina di ricezione dati, cioè login.aspx, come devo fare per reperire il valore di txtPassword ???


E' meglio usare il postbackurl o il vecchio metodo con form HTML e trasferimento dati cone metodo POST per poi riprendere il tutto con l'oggetto REQUEST?

Grazie

pozzoli.samuele Profilo | Senior Member

Molto semplice, con asp.net 2...

http://www.aspitalia.com/script/674/Effettuare-Postback-Pagina-ASP.NET-2.0.aspx

Perchè usare i form html?

Cmq... il form che tu dichiari per forza di cose ad inizio pagina, è sempre un form html! Solo runat server, quindi nessuno ti vieta di usare le possibilità che il form stesso ti offre.

Buon lavoro, comunque!

ravalon Profilo | Expert

non capisco bene questa parte

lblNome.Text = ((TextBox)PreviousPage.FindControl("txtNome")).Text;


in VB come sarebbe ?

pozzoli.samuele Profilo | Senior Member

>non capisco bene questa parte

E' ciò che si riferisce alla pagina chiamante!

>
>lblNome.Text = ((TextBox)PreviousPage.FindControl("txtNome")).Text;
>
>
>in VB come sarebbe ?

Dovrebb esuonare tipo...

lblNome.Text = ctype(PreviusPage.FindControl("txtNome"),TextBox).Text
^ ^
^ Conversione del tipo ^ In textBox
Label su questa pagina Del controllo della pagina precedente


Ti trovi?

ravalon Profilo | Expert

Io però non ho messo <FORM></FORM> dato che mi da errore ....è quello l'errore ? perchè non mi funziona quel codice, restituisce nullo...

Da una pagina default.aspx richiamo una pagina login.aspx tramite postbackurl

nella pagina login.aspx ho messo

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = True Then
Dim SourceTextBox As TextBox
SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"), TextBox)
MsgBox(SourceTextBox)
End If
End Sub

ma non funziona, nemmeno vede che è un postback, devo forse mettere

If PreviousPage.IsPostBack = True Then

?

pozzoli.samuele Profilo | Senior Member

>Io però non ho messo <FORM></FORM> dato che mi da
>errore ....è quello l'errore ? perchè non mi funziona quel codice,
>restituisce nullo...

Aspetta aspetta aspetta... in una pagina aspx, almeno un form runat="Server" ci deve essere. Per forza!

>
>Da una pagina default.aspx richiamo una pagina login.aspx tramite
>postbackurl
>

Ok, e non dovrebbero esserci problemi.

>nella pagina login.aspx ho messo
>
>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
>Handles Me.Load
> If Page.IsPostBack = True Then
> Dim SourceTextBox As TextBox
>SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"),
>TextBox)
> MsgBox(SourceTextBox)
> End If
> End Sub
>
>ma non funziona, nemmeno vede che è un postback, devo forse mettere

No. Non devi mettere così!

>
>If PreviousPage.IsPostBack = True Then
>
>?

E tantomeno così!

Togli l'if, o almeno, metti

if not ispostback() then

Perchè altrimenti aspetta il postbqack della login.aspx per aprirla.

Se non vuoi metterlo nel caso l'utente sia già loggato, devi mettere un test sulla session!

Prova a dirmi se hai capito così o ti serve altro! ;)

ravalon Profilo | Expert

Allora ho messo cosi

If Not IsPostBack() Then
Dim SourceTextBox As TextBox
SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"), TextBox)
MsgBox(SourceTextBox)
End If

ma non va....restituisce NOTHING

Devo dire che il bottone da cui parte l'invio di dati tramite il postback si trova in una master page per cui nella master non c'è nessun <FORM></FORM>

Ho allora inserito prima dei campi di testo un

<form id="formLogin">

Ma cosi quando premo LOGIN per l'invio dei dati mi da questo errore

Convalida di viewstate MAC non riuscita

Sto sbagliando qualcosa di banale lo so ma non capisco cosa...

pozzoli.samuele Profilo | Senior Member

Non ti va eh, di mettere le due pagine di esempio che provo questa sera a vedere?

Perchè mi sembra che ti stia, tra le altre cose, un po' complicando la vita...

Dai, se vuoi... Adesso non posso, ma quendo arrivo a casa provo a vedere com'è il codice.

ravalon Profilo | Expert

Ho trovato l'errore....

Creando una nuova pagina di prova dalla quale far partire i dati spediti, riesco ad ottenere i dati con un codice cosi

***********************
If Not IsPostBack() Then
Dim SourceTextBox As TextBox
SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"), TextBox)
TextBox1.Text = SourceTextBox.Text
End If
***********************

Quindi devo capire come mai dalle caselle inserite nella master page non funzionano....secondo te ?

Inoltre in questo modo sono obbligato ad avere delle textbox sulle quali riversare i dati ottenuti, mentre a me servono per fare un controllo su DATABASE e da li poi creo una sessione di autenticazione...

è possibile ottenere i dati e metterli in una variabile stringa ??? io non riesco

pozzoli.samuele Profilo | Senior Member

>Ho trovato l'errore....
>
>Creando una nuova pagina di prova dalla quale far partire i dati
>spediti, riesco ad ottenere i dati con un codice cosi
>
>***********************
>If Not IsPostBack() Then
> Dim SourceTextBox As TextBox
>SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"),
>TextBox)
> TextBox1.Text = SourceTextBox.Text
>End If
>***********************
>
>Quindi devo capire come mai dalle caselle inserite nella master
>page non funzionano....secondo te ?

Attenzione... le master page si comportano in modo strano. Ad esempio: Vengono caricate dopo le detail page. Quindi... Se tu hai un master page, che contiene i dati, li compili e la login è nella master, è probabile che quando carichi la login, la master non è ancora stata caricata e quindi non esiste!

Inoltre, se ti riferisci ad un oggetto nella master... Bhè, questo sta nella master, non nella detail. E quindi ti devi riferire ad esso come oggetto della master e non della detail.

>
>Inoltre in questo modo sono obbligato ad avere delle textbox
>sulle quali riversare i dati ottenuti, mentre a me servono per
>fare un controllo su DATABASE e da li poi creo una sessione di
>autenticazione...
>
>è possibile ottenere i dati e metterli in una variabile stringa
>??? io non riesco

Hai fatto questo passo? Potresti fare quest'altro!

***********************
If Not IsPostBack() Then
Dim SourceTextBox As TextBox
SourceTextBox = CType(PreviousPage.FindControl("txtEmailCostola"),
TextBox)
Dim dato as string = SourceTextBox.Text
End If
***********************

Oppure, meglio ancora:

***********************
If Not IsPostBack() Then
Dim dato As String = CType(PreviousPage.FindControl"txtEmailCostola"),TextBox).Text
End If
***********************



Dai che ci sei vicino!

ravalon Profilo | Expert

Senti dato che è una cosa che mi serve per fare un confronto col database, ho deciso di lasciar perdere il postback e richiamare una funzione che fa il controllo allo scatenarsi dell'evento OnClick di un bottone....

Che dici ho fatto bene ?

In effetti devono essere le masterpage a comportarsi in modo strano dato che da un'altra pagina mi funziona correttamente tutto..

Però mi piacerebbe sapere come estrarre tutti i dati che voglio in una variabile stringa e non in una casella di testo...potresti dirmi questo ?

pozzoli.samuele Profilo | Senior Member

CERTO CHE HAI FATTO BENE!

La cosa migliore è fare le cose semplici, e che funzionano bene!

Probabilmente il trucco è tutto li! Viene generato dal fatto che non hai ancora istanziato la master quando richiami la login.aspx.

Se hai tirato su un sistema che va, è semplice e funziona.... Cosa vuoi di più dalla vita? Ok... Oltre all'amaro!

(niente pubblicità occulte... hihihi.... )

Perfeto... Se serve ancora una mano... son qui.

ravalon Profilo | Expert

Si ho fatto una programmazione cosi come la farei per una Windows application....

...sta cosa mi gasa anche se non ho tutti gli eventi che ho nelle win app...

Sta cosa del postback la riprenderò quando avrò bisogno di inviare altri dati, per ora stop

Magari riprendo la discussione più avanti....per ora ti ringrazio, sei stato gentilissimo !!!

pozzoli.samuele Profilo | Senior Member

Di niente immaginarsi!

Guarda... Hai programmato come una webapps? Bene! Hai appena capito come funziona esattamente il framework .net!

E' proprio così che bisogna ragionare, per fare le cose semplici... Hai appena cominciato, eh? E arrivi da asp 3.0, vero?

Stai facendo le stesse scoperte che ho fatto io tre / 4 anni fa!

Buon lavoro!

ravalon Profilo | Expert

Si in effetti sono novizio del .NET e vengo da ASP 3.0

non mi sono ancora staccato completamente dal vecchio modo di fare pagine asp....ma credo di avere imboccato la strada giusta..

Grazie di tutto, anche dell'incoraggiamento che sento salire dal modo in cui mi parli !!

pozzoli.samuele Profilo | Senior Member

Guarda... Ti si rovescia il mondo! Fai magari fatica a ragionare in questo modo. Ma, prometto. Per due settimane! Facciamo due mesi... Se proprio sei solo. Poi non torneresti indietro nemmeno se ti pagassero oro!

ravalon Profilo | Expert

Spero tu abbia ragione...

ma sto giusto per apprendere i fondamenti di ASP 2,0 con VWD 2005 che già sta uscendo la versione 2008...cosi non sarò mai al passo coi tempi ...sigh.-..

Comunque è stata una rivoluzione....spero che sia come tu dici che troverò molti giovamenti...
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