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
Downloads