Domanda

Supponiamo che io ho due campi di testo in una pagina, uno per nome e un altro per l'età.

Quando si fa clic sul pulsante di invio quei valori dovrebbe apparire in un'altra pagina. Uno può dare l'esempio per quello .. Io sono totalmente confuso.

Ti prego, aiutami Grazie

È stato utile?

Soluzione

MSDN ha una pagina su questo, Come: Valori passare tra ASP.NET Pagine web :

Sono disponibili anche se la pagina di origine è in una diversa applicazione ASP.NET Web dalla pagina di destinazione le seguenti opzioni, o se la pagina di origine non è una pagina ASP.NET Web:

  • Utilizza una stringa di query.
  • Get HTTP POST informazioni dalla sorgente della pagina.

Sono disponibili le seguenti opzioni solo quando le pagine origine e di destinazione sono nello stesso Web ASP.NET applicazione.

  • Utilizza lo stato della sessione.
  • Creare proprietà pubbliche nella pagina di origine e l'accesso ai valori delle proprietà della pagina di destinazione.
  • Ottenere informazioni di controllo nella pagina di destinazione dai controlli nella pagina di origine.

Per il vostro scenario, suona come usando POST è la strada da percorrere, dal momento che si dispone di caselle di testo sulla prima pagina. Esempio:

Prima pagina:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>Page 1</title>
</head>
<body>
  <form id="form1" runat="server" action="WebForm2.aspx">
  <div>
    Name: <asp:TextBox ID="tbName" runat="server"></asp:TextBox><br />
    Age: <asp:TextBox ID="tbAge" runat="server"></asp:TextBox><br />
    <asp:Button ID="submit" runat="server" Text="Go!" />
  </div>
  </form>
</body>
</html>

Si noti la action="WebForm2.aspx" che dirige il POST alla seconda pagina. Non c'è code-behind.

Pagina 2 (pagina ricezione):

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm2.aspx.vb" Inherits="WebApplication2.WebForm2" EnableViewStateMac="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Page 2</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Literal ID="litText" runat="server"></asp:Literal>
    </form>
</body>
</html>

Avviso l'attributo EnableViewStateMac="false" sull'elemento pagina. E 'importante.

Il code-behind, afferrando i valori utilizzando una semplice Request.Form():

Public Class WebForm2
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    litText.Text = Request.Form("tbName") & ": " & Request.Form("tbAge")
  End Sub
End Class

Questo dovrebbe funzionare ...:)

Altri suggerimenti

Mettere questo codice al pulsante di invio gestore di eventi,

private void btnSubmit_Click (oggetto mittente, System.EventArgs e) { Response.Redirect ( "AnotherPage.aspx? Name =" + This.txtName.Text + "& Age =" + this.txtAge.Text); }

Inserire il codice alla seconda pagina Page Load,

private void Page_Load (mittente dell'oggetto, System.EventArgs e) { this.txtBox1.Text = Request.QueryString [ "Nome"]; this.txtBox2.Text = Request.QueryString [ "Age"]; }

Hai un paio di opzioni. **

1. Utilizzare Query stringa.


(Cons)
  - Text might be too lengthy 
  - You might have to encrypt/decrypt query string based on your requirement 
(Pros)
  - Easy to manage

2. Utilizzare sessione

(Cons)
  - May increase processing load on server
  - You have to check and clear the session if there are too many transactions
(Pros) 
  - Values from different pages, methods can be stored once in the session and retrieved from when needed
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top