PostBackUrl restituisce null

martedì 16 ottobre 2012 - 12.18
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert

Ciao a tutti
ho inserito in una pagina una textbox e un button:
<asp:TextBox ID="txtCerca" TextMode="SingleLine" Columns="40" runat="server"></asp:TextBox>
<asp:Button ID="btnCerca" Text="cerca" runat="server" ValidationGroup="vgCerca" PostBackUrl="~/cerca.aspx"/>

in cerca.aspx eseguo:
cerca = ((TextBox)PreviousPage.FindControl("txtCerca")).Text
ma restituisce sempre null.
Le due pagine hanno una masterpage e all'interno della masterpage ho inserito il tag form.
Grazie mille

martinez Profilo | Senior Member

Ciao!
Hai dei controlli con convalida lato server nella pagna?

Se la risposta è affermativa è necessario controllare che la proprietà IsValid della pagina sia true prima di elaborare il postback!

Spero di esserti stato utile ...

Gemini Profilo | Expert

I controlli sono tutti validi :-)

DomA Profilo | Expert

Ciao,

>>cerca = ((TextBox)PreviousPage.FindControl("txtCerca")).Text

prova così

dim cerca as TextBox Dim Testo as string cerca = CType(PreviousPage.FindControl("txtCerca"), TextBox) Testo = cerca.text

Ho scritto il codice, senza l'ausilio dell'editor, non credo cmq che ci siano errori.

Fammi sapere

____________________________________________________________________


Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

totti240282 Profilo | Guru

Se sono in una master page, devi ottenere un riferimento ad essa e poi al controllo contenitore :

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


C'è solo un capitano !!!!!!

Gemini Profilo | Expert

ciao Capitano
avevo già risolto il problema qualche tempo fà solo che non lo ricordavo :-)
Bisogna prima avere un riferimento al ContentPlaceHolder della MasterPage
ContentPlaceHolder cphCorpo = (ContentPlaceHolder)PreviousPage.Master.FindControl("cphCorpo");

andrestu Profilo | Expert

in alternativa puoi usare questo metodo

public static Control FindNestedControl(this Control control, string ID) { if (control == null || string.IsNullOrEmpty(ID)) return null; else if (control.ID == ID) return control; else if (control.Controls.Count > 0) { foreach (Control c in control.Controls) { var found = c.FindNestedControl(ID); if (found != null) return found; } return null; } else return null; }

se gli passi come control l'oggetto PreviousPage e l'id del controllo che cerchi dovrebbe trovartelo in automatico, l'unico aspetto negativo è che se nella pagina che gli passi come argomento hai controlli con gli stessi ID potrebbe trovarti quello sbagliato...

Andrea Restucci - Web Developer
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5