2010-11-17 15 views
5

Básicamente, quiero tomar un URLString y separar todas las variables y sus valores y publicarlos en otra página con un redireccionamiento a esta página ... ¿Cómo puedo sacar esto sin tener un formulario y real, etc ...ASP.net Publicar con redirección?

Esto es lo que tengo ..

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

No puede redirigir ni publicar. –

Respuesta

2

Como no se puede redirigir y posterior al mismo tiempo, su única opción es hacer una página html con un formulario que se presenta al cargar la página. A menos que pueda hacer que el receptor acepte los parámetros en la url, por supuesto. Si es una página de asp.net a la que desea "publicar", no debería importar si envía datos en la cadena de consulta, a menos que, por supuesto, esté enviando cantidades masivas de datos.

Recuerde que redirigir es lo mismo que decirle al navegador "ir a esta página". Esta información está en el encabezado http que devuelve. Por lo tanto, no hay demasiados gastos generales en la representación de un formulario que se envía automáticamente.

+0

Dang eso es lo que mi perezoso pero no quería hacer :) ok, gracias hombre – Rico

0

¿Qué es lo que necesita para hacer la página a la que está redirigiendo al usuario? Su mejor opción es usar las variables de sesión para pasar los datos entre las páginas en el redireccionamiento a menos que desee conservar el formulario que se pasó inicialmente a la página.

Puede usar un código como el siguiente para agregar la información a un elemento de la sesión.

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

Buen punto Frazell, pero la sesión solo funciona si está redirigiendo a una página dentro de la misma aplicación. –

+0

Sí cierto. Supuse que estaba dentro de la misma aplicación, pero necesitamos más información antes de poder estar seguros. –

1

No estoy seguro de que esta es la estrategia correcta - ¿ha considerado ya sea HttpModules para las solicitudes de manipular o Server.Transfer para la redirección interna?

Cuestiones relacionadas