2010-12-03 7 views
0

Ich habe zwei Webformular. Beispiel: a.aspx und b.aspxEinfache ASP.NET-Ausgabe

In a.aspx habe ich eine Textbox mit ID="Textbox1". In b.aspx, habe ich ein Etikett mit ID="Label1"

ich will, wenn ich öffnen b.aspx, Label1.text = Textbox1.Text ..

, aber wenn ich in b.aspx Page_Load Funktion, schreiben intellisense doesn‘ t wissen Textbox1.

Wie kann ich das tun?

+0

Sie müssen eine Möglichkeit finden, den Wert von Textbox1 über Postback zu erhalten. Wie navigiert der Benutzer von a.aspx zu b.aspx? –

Antwort

3

Wenn ein Benutzer ein ASPX anfordert, erstellt ASP.NET eine neue Instanz der Page-Klasse (das Webformular), verarbeitet sie und sendet das resultierende HTML an den Benutzer. Schließlich wird die Seiteninstanz gelöscht.

Wenn Sie eine Taste auf einer ASP.NET-Seite klicken, wird „Post zurück“ auf die gleiche URL (das heißt, gehen Sie von a.aspxzurück zua.aspx). Als Nächstes führt ASP.NET einige magische Funktionen aus: Es ordnet Werten, die Benutzer in Formularelementen eingegeben haben, Steuerelemente auf Ihrer Seite zu, z. B. Textbox1.

Um Werte über mehrere Seiten gemeinsam nutzen, müssen Sie eine der folgenden Mechanismen verwenden:

  • Beitrag direkt Seite b. Für den idiomatischen ASP.NET-Weg, dies zu tun, siehe Cross-Page Posting in ASP.NET Web Pages.

  • Fügen Sie die Daten in die URL selbst, zum Beispiel durch eine Abfragezeichenfolgeflag mit:

    http://www.mysite.com/b.aspx?contents=foo

  • speichert die Daten in ein session Variable (oder ein Cookie). Dies ist keine gute Idee, es sei denn, der Wert ist tatsächlich auf die Sitzung des Benutzers beschränkt (z. B. Einstellen einer Zeitzone). Wenn die Skalierbarkeit wichtig ist, müssen Sie außerdem größere Sorgfalt auf die Sitzung verwenden.

  • Speichern Sie die Daten in eine Datenbank, dann rufen Sie es beim Erstellen anderer Seiten ab.

0

höchstwahrscheinlich haben Sie etwas Aktion, wie ein Knopf klicken Sie auf a.aspx, die Sie zu b.aspx, nicht wahr? In der Funktion für diese Schaltfläche klicken, würden Sie den Inhalt des Textfelds der Querystring hinzufügen und an b.aspx umleiten.

response.redirect("b.aspx?contents=" + Textbox1.text); 

und dann in b.aspx, in page_load, würden Sie tun:

Label1.text = request("contents"); 

Ist das, was Sie fragen? Wenn Sie es nicht in Intellisense sehen, müssen Sie die Seite möglicherweise nur schließen und erneut öffnen, damit sie mit der Designerdatei synchronisiert wird.

0

Es kann auf viele Arten erfolgen. Hier erzähle ich zwei einfache und einfache Methoden 1. U die Werte als Parameter in der URL senden, wenn ur durch Klicken auf eine Schaltfläche, Link-Taste usw. U kann wie folgt

b.aspx gehen hinzufügen
  1. Sie können Sitzungsvariablen verwenden. Wenn Sie Sitzungsvariablen verwenden, kann der Wert von jeder beliebigen Seite der Website {aspx} übernommen werden.

    Sitzung ["val"] = textBox1.Text; // 1. Seite Label1.Text = Session [ "val"] ToString();. // 2. Seite

Hoffnung u versuchen dieses

-1

den Wert in der Sitzung speichern. Auf diese Weise können Benutzer große Mengen an Text eingeben und die URL wird nicht hässlich aussehen. Außerdem ist die zulässige Länge für eine URL begrenzt.

Verwendung C# -Code wie folgt aus:

// create a new Session variable to store the users name 
Session ('SomeText') = 'James'; 

// display the name in any page on your site 
Out ('Your value is ' + Session ('SomeText')); 
-1

können Sie immer Masterpages verwenden, und setzen auf der Masterpage ein öffentliches Eigentum. Lassen Sie diese Eigenschaft in den Anzeigestatus der Seite schreiben. Da sie öffentlich ist, kann pageA den Wert und pageB den Wert lesen.

+0

Wie würde das funktionieren? Der Viewstatus wird nur mit einem Post gepflegt. Meinst du, dass du einen Seitenwechsel machen würdest? – ChickenMilkBomb