In this example i am going to describe Cross Page Posting or postback in ASP.NET 2.0 / 3.5 using C# and VB.NET.
Cross Page posting or cross page postback is used to submit a form on one page (say default.aspx) and retrieve values of controls of this page on another page (say Default2.aspx)
There are two ways we can use cross page postsbacks in ASP.NET
1st method
In this i've created a Default.aspx page with two textbox and one button , button click will post back to Default2.aspx and there we will retrieve and show values of both textboxes
Html source of Default.aspx page is like
Now to retrieve values of textBoxes on Default2.aspx page, write below mentioned code in Page_Load event of second page (Default2.aspx)
C# code behind
VB.NET Code behind
If you are using masterpages then you need to write code to FindControl as mentioned below
2nd Method
Using Property to expose and Consume values of TextBox
If we are using this method then we don't need to use FindControl method at all
For this we need to create property in code behind of the page to be cross page post back (Default.aspx)
Html of the page needs no changes ,
C# code behind for Default.aspx
VB.NET
Now to retrieve or consume exposed properties on Second page we need to add below mentioned page directive in html source of Default2.aspx page(usually at the top of page)
Now write this code in page_Load event of second page to retrieve values of controls
C# code
VB Code
Hope this helps
Cross Page posting or cross page postback is used to submit a form on one page (say default.aspx) and retrieve values of controls of this page on another page (say Default2.aspx)
There are two ways we can use cross page postsbacks in ASP.NET
1st method
In this i've created a Default.aspx page with two textbox and one button , button click will post back to Default2.aspx and there we will retrieve and show values of both textboxes
Html source of Default.aspx page is like
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Pagetitle> head> <body> <form id="form1" runat="server"> <div> First Name: <asp:TextBox ID="txtFirstName" runat="server"> asp:TextBox><br /><br /> Last Name: <asp:TextBox ID="txtLastName" runat="server"> asp:TextBox><br /><br /><br /> <asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" PostBackUrl="~/Default2.aspx" Text="Submit to Second Page" /><br /> div> form> body> html>
Don't forget to set PostBackUrl Property of Button
PostBackUrl="~/Default2.aspx"
PostBackUrl="~/Default2.aspx"
Now to retrieve values of textBoxes on Default2.aspx page, write below mentioned code in Page_Load event of second page (Default2.aspx)
C# code behind
01
protected
void
Page_Load(
object
sender, EventArgs e)
02
{
03
//Check whether previous page is cross page post back or not
04
if
(PreviousPage !=
null
&& PreviousPage.IsCrossPagePostBack)
05
{
06
TextBox txtPbFirstName = (TextBox)PreviousPage.FindControl(
"txtFirstName"
);
07
TextBox txtPbLastName = (TextBox)PreviousPage.FindControl(
"txtLastName"
);
08
Label1.Text =
"Welcome "
+ txtPbFirstName.Text +
" "
+ txtPbLastName.Text;
09
}
10
else
11
{
12
Response.Redirect(
"Default.aspx"
);
13
}
14
}
01
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
02
'Check whether previous page is cross page post back or not
03
If
PreviousPage IsNot
Nothing
AndAlso
PreviousPage.IsCrossPagePostBack
Then
04
Dim
txtPbFirstName
As
TextBox =
DirectCast
(PreviousPage.FindControl(
"txtFirstName"
), TextBox)
05
Dim
txtPbLastName
As
TextBox =
DirectCast
(PreviousPage.FindControl(
"txtLastName"
), TextBox)
06
Label1.Text = (
"Welcome "
& txtPbFirstName.Text &
" "
) + txtPbLastName.Text
07
Else
08
Response.Redirect(
"Default.aspx"
)
09
End
If
10
End
Sub
If you are using masterpages then you need to write code to FindControl as mentioned below
1
ContentPlaceHolder exampleHolder =(ContentPlaceHolder)Page.PreviousPage.Form.FindControl (
"Content1"
));
2
TextBox txtExample = exampleHolder.FindControl(
"txtFirstName"
);
2nd Method
Using Property to expose and Consume values of TextBox
If we are using this method then we don't need to use FindControl method at all
For this we need to create property in code behind of the page to be cross page post back (Default.aspx)
Html of the page needs no changes ,
C# code behind for Default.aspx
01
public
TextBox pbTxtFirstName
02
{
03
get
04
{
05
return
txtFirstName;
06
}
07
}
08
09
public
TextBox pbTxtLastName
10
{
11
get
12
{
13
return
txtLastName;
14
}
15
}
VB.NET
01
Public
ReadOnly
Property
pbTxtFirstName()
As
TextBox
02
Get
03
Return
txtFirstName
04
End
Get
05
End
Property
06
07
Public
ReadOnly
Property
pbTxtLastName()
As
TextBox
08
Get
09
Return
txtLastName
10
End
Get
11
End
Property
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
C# code
01
protected
void
Page_Load(
object
sender, EventArgs e)
02
{
03
if
(PreviousPage !=
null
&& PreviousPage.IsCrossPagePostBack)
04
{
05
Label1.Text =
"Welcome "
+ PreviousPage.pbTxtFirstName.Text +
" "
+ PreviousPage.pbTxtLastName.Text;
06
}
07
else
08
{
09
Response.Redirect(
"Default.aspx"
);
10
}
11
}
1
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
2
If
PreviousPage IsNot
Nothing
AndAlso
PreviousPage.IsCrossPagePostBack
Then
3
Label1.Text = (
"Welcome "
& PreviousPage.pbTxtFirstName.Text &
" "
) + PreviousPage.pbTxtLastName.Text
4
Else
5
Response.Redirect(
"Default.aspx"
)
6
7
End
If
8
End
Sub
Hope this helps
No comments:
Post a Comment