I want to redirect a response to another URL while it contains some POST data in it\'s HTTP header.
// Inside an ASP.NET page code behind:
Response.Redirect(
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.
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.
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 here
sb.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.
You can use viewstate to "transfer" the data and read it on a new page or even the same page.