Response.Redirect which POSTs data to another URL in ASP.NET Response.Redirect which POSTs data to another URL in ASP.NET asp.net asp.net

Response.Redirect which POSTs data to another URL in ASP.NET


you can send huge data also with this trick..

Response.Clear();StringBuilder sb = new StringBuilder();sb.Append("<html>");sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");sb.AppendFormat("<form name='form' action='{0}' method='post'>",postbackUrl);sb.AppendFormat("<input type='hidden' name='id' value='{0}'>", id);// Other params go heresb.Append("</form>");sb.Append("</body>");sb.Append("</html>");Response.Write(sb.ToString());Response.End();


You can't POST using a redirect. By definition a redirect means the server sending a 302 redirect HTTP status code to the client with the new location so that the client issues a GET request to this new location. That's how the HTTP protocol works and there's not mu ch you can do about it.

So one way to achieve this would be to redirect to some temporary page that will contain an HTML <form> with method="POST" and containing the values you want to send as hidden fields. Then you could use javascript to autosubmit this form.


Though it is quite old thread, I thought I would share how I do it.

Let's say sending page is a.aspx and destination page is b.aspx.

  1. Collect user inputs in a.aspx. User clicks submit button which causes postback.
  2. inside Button_click event of a.aspx, process volume data (for example save uploaded binary files). Determine link of the volume data and append that to end of request.form name-value string.
  3. Encrypt the final name-value string and set it to a cookie.
  4. Redirect to b.aspx
  5. in b.aspx, retrieve that cookie, decrypt and you get all name-value pair. Now process them as usual.

Advantages:(a) b.aspx is shown in browser address bar. It enters in browser's history. Server.transfer do these.(b) It gives effect of post. Users can not see the name-value pair in querystring.