Envoyer des données d’une page à une autre

J’essaie d’envoyer des données de formulaire d’une page à une autre à l’aide de C # ASP.Net. J’ai deux pages default.aspx et default2.aspx.Voici le code que j’ai dans default.aspx:

 


D’après ce que je sais jusqu’à présent, PostBackUrl est utilisé pour définir la page dans laquelle vous souhaitez que les données soient envoyées. Est-ce correct?

Aussi, comment puis-je récupérer les données envoyées à Default2.aspx?

Vous avez quelques options, considérez

  1. État de la session
  2. Chaîne de requête

État de la session

Si vous envisagez d’envoyer des données entre des pages, vous pouvez envisager d’utiliser l’état de session .

L’état de session ASP.NET vous permet de stocker et de récupérer les valeurs d’un utilisateur lorsque celui-ci navigue dans les pages ASP.NET d’une application Web. HTTP est un protocole sans état. Cela signifie qu’un serveur Web traite chaque requête HTTP d’une page comme une requête indépendante. Le serveur ne conserve aucune connaissance des valeurs de variable utilisées lors des requêtes précédentes. L’état de session ASP.NET identifie les demandes émanant du même navigateur pendant une fenêtre à durée limitée en tant que session et fournit un moyen de conserver les valeurs de variable pour la durée de cette session. Par défaut, l’état de session ASP.NET est activé pour toutes les applications ASP.NET.

Le meilleur de tout, c’est facile!

Mettre des données dans (par exemple sur default1.aspx)

 Session["FirstName"] = FirstNameTextBox.Text; Session["LastName"] = LastNameTextBox.Text; 

Sortez-le (par exemple sur default2.aspx)

 ssortingng firstname = Session["FirstName"] // value of FirstNameTextBox.Text; ssortingng lastname = Session["LastName"] // value of LastNameTextBox.Text; 

Chaîne de requête

Si vous envoyez de petites quantités de données (par exemple, id = 4), il peut être plus pratique d’utiliser des variables de chaîne de requête.

Vous devriez explorer l’utilisation des variables de chaîne de requête, par exemple

 http://www.domain.com?param1=data1&param2=data2 

Vous pouvez alors obtenir les données comme

 ssortingng param1 = Request.QuerySsortingng["param1"]; // value will be data1 ssortingng param2 = Request.QuerySsortingng["param2"]; // value will be data2 

Vous pouvez utiliser quelque chose comme Comment testez-vous vos variables Request.QuerySsortingng []? pour obtenir les données.

Si vous n’êtes pas familier avec les variables de chaîne de requête, consultez leur article sur Wikipedia.

Les variables de session peuvent être utiles dans ce contexte.

Par exemple, supposons que vos zones de texte contiennent des identifiants de connexion, puis enregistrez-les dans des sessions pour pouvoir les utiliser ultérieurement dans une autre page. Comme ça:

Dans Button_Click-

 Session["name"]=TextBox1.Text; Session["pwd"]= TextBox2.Text; 

Au lieu de PostBackUrl="~/Default2.aspx" vous pouvez écrire ce qui suit –

 //in button click Server.Transfer("~/Default2.aspx"); 

Dans le chargement de la page Default2.aspx:

 ssortingng a= Session["name"].ToSsortingng(); ssortingng b= Session["pwd"].ToSsortingng(); 

Essayez ceci dans le Page_Load de Default2.aspx.

  if (PreviousPage != null) { if (((TextBox)PreviousPage.FindControl("TextBox1")) != null) { ssortingng txtBox1 = ((TextBox)PreviousPage.FindControl("TextBox1")).Text; Response.Write(txtBox1); } } 

Et oui, vous avez raison, les données de la page 1 seront envoyées à la page 2 si vous utilisez l’atsortingbut PostBackUrl .

Lien MSDN

Alors que toutes les réponses ici fonctionneront, certaines ne sont pas les plus efficaces. Pourquoi un http POST simple / standard devrait-il invoquer une Session (coûteuse) côté serveur?

Votre code ne fait rien de spécial, il s’agit simplement de poster un formulaire sur une autre page. Tout ce que vous devez faire pour obtenir les données POSTed est de passer par la collection Request.Form .

Avant la disponibilité de la définition de PostBackUrl (si la mémoire sert la version 1 de asp.net), Server.Transfer et l’obtention de références à la page précédente correspondaient à la manière dont le POST sur plusieurs pages était effectué / documenté. Cependant, avec PostBackUrl , les choses reviennent à la base, comme il se doit: un http POST standard d’une ressource à l’autre.

Voici un fil SO similaire qui peut-être utile.