2010-11-17 2 views
5

Fondamentalement, je veux prendre un URLString et éclater toutes les variables et leurs valeurs et les poster sur une autre page avec une redirection vers la page .. Comment puis-je retirer ceci sans avoir un formulaire et actuall soumettre etc ...ASP.net Postez avec une redirection?

C'est ce que je suis ..

string url = "http://www.blah.com/xyz.aspx"; 


     StringBuilder postData = new StringBuilder(); 

     postData.Append("CustomerID=" + HttpUtility.UrlEncode("Hello Rico") + "&"); 
     postData.Append("FirstName=" + HttpUtility.UrlEncode("HelloFirstName")); 
     //ETC for all Form Elements  

     // Now to Send Data.  
     StreamWriter writer = null; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.ContentLength = postData.ToString().Length; 
     try 
     { 
      writer = new StreamWriter(request.GetRequestStream()); 
      writer.Write(postData.ToString()); 
      writer.Flush(); 

      HttpWebResponse WebResp = (HttpWebResponse)request.GetResponse(); 

      //Now, we read the response (the string), and output it. 
      Stream Answer = WebResp.GetResponseStream(); 
      StreamReader _Answer = new StreamReader(Answer); 
      Response.Write(_Answer.ReadToEnd()); 

     } 
     finally 
     { 
      if (writer != null) 
       writer.Close(); 
     } 
+1

Vous ne pouvez pas rediriger et publier. –

Répondre

2

Puisque vous ne pouvez pas rediriger et après en même temps, votre seule option est de rendre une page html avec une forme qui est soumise à la charge de page. À moins que vous ne puissiez faire accepter les paramètres dans l'URL, bien sûr. Si c'est une page asp.net que vous voulez "publier", cela ne devrait pas vraiment importer si vous envoyez des données dans la chaîne de requête, à moins bien sûr que vous envoyez des quantités massives de données. Rappelez-vous que la redirection est la même chose que de dire au navigateur «d'aller sur cette page à la place». Cette information est dans l'en-tête http que vous renvoyez. Par conséquent, il n'y a pas beaucoup de frais généraux dans le rendu d'un formulaire soumis automatiquement.

+0

Dang c'est ce que mon paresseux, mais je ne veux pas faire :) ok merci l'homme – Rico

0

De quoi avez-vous besoin pour rediriger la page? Votre meilleure option consiste à utiliser des variables de session pour transmettre les données entre les pages sur la redirection, sauf si vous souhaitez préserver le formulaire qui a été initialement transmis à la page.

Vous pouvez utiliser du code comme celui-ci pour ajouter les informations à un élément de session.

Session.Item("CustomerID") = "CustomerID=" & ID.ToString 
+0

Bon point Frazell, mais Session ne fonctionne que si vous redirigez vers une page dans la même application. –

+0

Oui vrai. J'ai supposé que c'était dans la même application, mais nous avons besoin de plus d'informations avant de pouvoir être certain. –

1

Je ne suis pas sûr que ce soit la bonne stratégie - avez-vous considéré soit HttpModules pour manipuler des demandes ou Server.Transfer pour la redirection interne?

Questions connexes