Domanda

So che questo ha ottenuto di essere il più semplice dal suono domanda mai chiesto ASP.Net ma sto sconcertato. Ho una forma in cui il mio visitatore potrà inserire nome, indirizzo, ecc Poi mi distacco che forma tramite la proprietà PostBackUrl del mio pulsante Invia per un'altra pagina, dove i campi dovrebbero essere tutti i ri-formato in nuovi campi nascosti, quindi Pubblicato nuovo a Paypal.

Il mio problema è che non posso ottenere ai valori inseriti dal visitatore nella pagina originale. Ogni volta che ho messo in "= runat 'server'", ASP.Net cambia completamente l'ID del controllo, rendendo impossibile capire come l'accesso. Nella forma di pubblicazione ho provato Request.Form["_txtFirstName"] e che alzato nullo. Poi ho provato ((TextBox)PreviousPage.FindControl("_txtFirstName")).Text e che è stato nullo, anche. Ho provato variazioni su quelli. Io non riesco a capire come dovrei arrivare a questi controlli. Perché questa roba bisogno di essere così difficile?

È stato utile?

Soluzione

Stai usando MasterPages? Se è così, si deve cercare per il controllo all'interno del segnaposto di contenuto:

ContentPlaceHolder placeholder = (ContentPlaceHolder)Page.PreviousPage.Master.FindControl("ContentPlaceHolder1");

TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1");

Altri suggerimenti

Qual è il nome del controllo TextBox in prima pagina? Non utilizzare il clientId, utilizzare l'ID che si è dichiarato come al momento della chiamata FindControl, quindi se si chiama ID = "TextBox1", utilizzare il codice sottostante per trovarlo.

Il secondo approccio sembra ok, tranne che ti sei perso la Page.PreviousPage. Questo non dovrebbe influenzare il risultato però. Avete Switched analisi su?

Questa è la sintassi standard dei documenti, posta nella tua pagina di destinazione ...

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}

In ASP.NET se il controllo è un controllo lato server, è sufficiente chiamano con l'ID dato ad essa quando si scrive codice, non quella resa.

Markup:

<input type="text" id="myId" runat="server" />

Codice dietro:

string controlValue = myId.Value;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top