I had a requirement to pass data between pages in my application.
I have a Page A where user will input some data and on submit User will be redirected to Page B where again user will enter some more data and on submitting user will be show a confirmation in Page C after doing some calculations and data saving.
Following is the idea I was trying to use:
PageA.aspx:
<form id="frmPageA" runat="server">
<p>Name: <asp:TextBox ID="txtName" runat="server"></asp:TextBox></p>
<p>Age: <asp:TextBox ID="txtAge" runat="server"></asp:TextBox></p>
<p><asp:Button ID="btnPostToPageB" runat="server" Text="Post To PageB" PostBackUrl="~/PageB.aspx" /></p>
</form>
In Page A Codebehind file I am creating following public properties of the inputs to access in Page B:
public string Name { get { return txtName.Text.ToString(); } }
public int Age { get { return Convert.ToInt32(txtAge.Text); } }
In PageB.aspx:
using previouspage directive to access page A public properties
<%@ PreviousPageType VirtualPath="~/PageA.aspx" %>
<form id="frmPageB" runat="server">
<asp:HiddenField ID="hfName" runat="server" />
<asp:HiddenField ID="hfAge" runat="server" />
<p><asp:RadioButtonList ID="rblGender" runat="server" TextAlign="Right" RepeatDirection="Horizontal">
<asp:ListItem Value="Female">Female</asp:ListItem>
<asp:ListItem Value="Male">Male</asp:ListItem>
</asp:RadioButtonList></p>
<p><asp:Button ID="btnPostToPageC" runat="server" Text="Post To PageC" PostBackUrl="~/PageC.aspx" /></p>
</form>
In Page B Codebehind file I am creating following public properties for the inputs to access in Page C:
public RadioButtonList Gender
{ get { return rblGender; } }
public string Name { get { return _name; } }
public int Age { get { return _age; } }
//checking if data is posted from Page A otherwise redirecting User to Page A
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack && PreviousPage.IsValid)
{
hfName.Value = PreviousPage.Name;
hfAge.Value = PreviousPage.Age.ToString();
}
else
Response.Redirect("PageA.aspx");
}`
in PageC.aspx:
using previouspage directive to access page A public properties
<%@ PreviousPageType VirtualPath="~/PageB.aspx" %>
<form id="frmPageC" runat="server">
<p>Name: <asp:Label ID="lblName" runat="server"></asp:Label></p>
<p>Age: <asp:Label ID="lblAge" runat="server"></asp:Label></p>
<p>Gender: <asp:Label ID="lblGender" runat="server"></asp:Label></p>
<p><asp:Button ID="btnBack" runat="server" Text="Back" PostBackUrl="~/PageA.aspx" /></p>
</form>
Page C code behind file:
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack && PreviousPage.IsValid)
{
lblName.Text = PreviousPage.Name.ToString();
lblAge.Text = PreviousPage.Age.ToString();
lblGender.Text = PreviousPage.Gender.SelectedValue.ToString();
}
else
Response.Redirect("PageA.aspx");