In this article I will explain how to redirect to another page when using Form Post method from code behind in ASP.Net using C# and VB.Net.
 
HTML Markup
The HTML Markup consists of two TextBoxes and a Button. The values of these TextBoxes will be posted to new page from code behind.
<table border="0" cellpadding="0" cellspacing="0">
<tr>
    <td>
        First Name:
    </td>
    <td>
        <asp:TextBox ID="txtFirstName" runat="server" />
    </td>
</tr>
<tr>
    <td>
        Last Name:
    </td>
    <td>
        <asp:TextBox ID="txtLastName" runat="server" />
    </td>
</tr>
<tr>
    <td>
    </td>
    <td>
        <asp:Button ID="btnPost" runat="server" Text="Post" OnClick="PostData" />
    </td>
</tr>
</table>
 
 
Namespaces
You will need to import the following namespaces.
C#
using System.Text;
using System.Collections.Specialized;
 
VB.Net
Imports System.Text
Imports System.Collections.Specialized
 
 
Redirecting to another page using Post method from code behind
When the Post Button is clicked, the values of TextBoxes are added to a NameValueCollection object.
Note: NameValueCollection is a collection of object having two parts i.e. Name and Value.
Then a HTML page consisting of a FORM tag is generated using string concatenation. The URL of the destination page is set in the action attribute of the FORM tag.
A loop is executed over the NameValueCollection and HTML INPUT TextBoxes are appended to the string. The Name part of the NameValueCollection is set in the name attribute of the TextBox, while the Value part is set in the value attribute of the TextBox.
In the BODY tag of the HTML page, a JavaScript event is defined, which will automatically submit the Form as soon as the HTML string is rendered on the page.
Finally the HTML string is written to the Response using Reponse.Write method.
C#
protected void PostData(object sender, EventArgs e)
{
    NameValueCollection collections = new NameValueCollection();
    collections.Add("FirstName", txtFirstName.Text.Trim());
    collections.Add("LastName", txtLastName.Text.Trim());
    string remoteUrl = "http://localhost:5075/Post_Redirect_Website/Page2_CS.aspx";
 
    string html = "<html><head>";
    html += "</head><body onload='document.forms[0].submit()'>";
    html += string.Format("<form name='PostForm' method='POST' action='{0}'>", remoteUrl);
    foreach (string key in collections.Keys)
    {
        html += string.Format("<input name='{0}' type='text' value='{1}'>", key, collections[key]);
    }
    html += "</form></body></html>";
    Response.Clear();
    Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");
    Response.HeaderEncoding = Encoding.GetEncoding("ISO-8859-1");
    Response.Charset = "ISO-8859-1";
    Response.Write(html);
    Response.End();
}
 
VB.Net
Protected Sub PostData(sender As Object, e As EventArgs)
    Dim collections As New NameValueCollection()
    collections.Add("FirstName", txtFirstName.Text.Trim())
    collections.Add("LastName", txtLastName.Text.Trim())
    Dim remoteUrl As String = "http://localhost:5075/Post_Redirect_Website/Page2_VB.aspx"
 
    Dim html As String = "<html><head>"
    html += "</head><body onload='document.forms[0].submit()'>"
    html += String.Format("<form name='PostForm' method='POST' action='{0}'>", remoteUrl)
    For Each key As String In collections.Keys
        html += String.Format("<input name='{0}' type='text' value='{1}'>", key, collections(key))
    Next
    html += "</form></body></html>"
    Response.Clear()
    Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1")
    Response.HeaderEncoding = Encoding.GetEncoding("ISO-8859-1")
    Response.Charset = "ISO-8859-1"
    Response.Write(html)
    Response.End()
End Sub
 
 
Fetching the Posted Data
The Form posted values are fetched from the Request.Form collection and displayed on another page.
HTML Markup
<table border="0" cellpadding="0" cellspacing="0">
<tr>
    <td>
        FirstName:
    </td>
    <td>
        <asp:Label ID="lblFirstName" runat="server" />
    </td>
</tr>
<tr>
    <td>
        LastName:
    </td>
    <td>
        <asp:Label ID="lblLastName" runat="server" />
    </td>
</tr>
</table>
 
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Form.Count > 0)
    {
        lblFirstName.Text = Request.Form["FirstName"];
        lblLastName.Text = Request.Form["LastName"];
    }
}
 
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Request.Form.Count > 0 Then
        lblFirstName.Text = Request.Form("FirstName")
        lblLastName.Text = Request.Form("LastName")
    End If
End Sub
 
 
Screenshot
Redirect to another page using Post method from code behind in ASP.Net using C# and VB.Net
 
 
Downloads