我们进行Web开发时经常会用到页面间传值的功能,下面结合ASP.NET开发对其进行简单的总结:
1、Url带参数
2、Session、Cookies、Application
3、post到目标页面,然后在目标页面Request
ASP中常用的方法,提交Form到其它页
4、使用Server.Transfer
举个例子看看:
(1)、创建一个web form
(2)、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
(3)、为button按钮创建click事件
代码如下:
private
void
Button1_Click (
object
sender, System.EventArgs e)
... {
Server.Transfer("webform2.aspx");
}
... {
Server.Transfer("webform2.aspx");
}
(4)、创建过程来返回TextBox1,TextBox2控件的值代码如下:
public
string
Name
... {
get
...{
return TextBox1.Text;
}
}
public string EMail
... {
get
...{
return TextBox2.Text;
}
}
... {
get
...{
return TextBox1.Text;
}
}
public string EMail
... {
get
...{
return TextBox2.Text;
}
}
(5)、新建一个目标页面命名为webform2
(6)、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private
void
Page_Load
( object sender, System.EventArgs e)
... {
//创建原始窗体的实例
WebForm1 wf1;
//获得实例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
( object sender, System.EventArgs e)
... {
//创建原始窗体的实例
WebForm1 wf1;
//获得实例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
运行,即可看到传递后的结果了。
5、ASP.NET 2.0中新引入的方式,通过PostBackUrl传递
看个例子:
(1)创建个发送页面 PageTransTest1.aspx
前台代码:
<%
...
@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTransTest1.aspx.cs" Inherits="Front_Test_PageTransTest1"
%>
<! 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 > 跨页面传送—发送页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< table border ="0" width ="100%" cellpadding ="4" cellspacing ="1" >
< tr >
< td >
< asp:Label ID ="Label1" runat ="server" AccessKey ="N" AssociatedControlID ="txtUid"
Text ="User<U>n</U>ame" ></ asp:Label >
< asp:TextBox ID ="txtUid" runat ="server" Width ="100px" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td >
< asp:Label ID ="Label2" runat ="server" AccessKey ="P" AssociatedControlID ="txtPwd"
Text ="<U>P</U>assword" ></ asp:Label >
< asp:TextBox ID ="txtPwd" runat ="server" TextMode ="Password" Width ="100px" > User < U > n < /U > ame </ asp:TextBox ></ td >
</ tr >
< tr >
< td >
< asp:Button ID ="btnGoOtherPage" runat ="server"
Text ="Post Back Other Page(G)" OnClick ="btnGoOtherPage_Click" AccessKey ="G" /></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
<! 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 > 跨页面传送—发送页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< table border ="0" width ="100%" cellpadding ="4" cellspacing ="1" >
< tr >
< td >
< asp:Label ID ="Label1" runat ="server" AccessKey ="N" AssociatedControlID ="txtUid"
Text ="User<U>n</U>ame" ></ asp:Label >
< asp:TextBox ID ="txtUid" runat ="server" Width ="100px" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td >
< asp:Label ID ="Label2" runat ="server" AccessKey ="P" AssociatedControlID ="txtPwd"
Text ="<U>P</U>assword" ></ asp:Label >
< asp:TextBox ID ="txtPwd" runat ="server" TextMode ="Password" Width ="100px" > User < U > n < /U > ame </ asp:TextBox ></ td >
</ tr >
< tr >
< td >
< asp:Button ID ="btnGoOtherPage" runat ="server"
Text ="Post Back Other Page(G)" OnClick ="btnGoOtherPage_Click" AccessKey ="G" /></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
后台代码:
using
System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Front_Test_PageTransTest1 : System.Web.UI.Page
... {
public TextBox Uid
...{
get
...{
return this.txtUid;
}
}
public TextBox Pwd
...{
get
...{
return this.txtPwd;
}
}
protected void Page_Load(object sender, EventArgs e)
...{
this.btnGoOtherPage.PostBackUrl = "PageTransTest2.aspx";
}
protected void btnGoOtherPage_Click(object sender, EventArgs e)
...{
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Front_Test_PageTransTest1 : System.Web.UI.Page
... {
public TextBox Uid
...{
get
...{
return this.txtUid;
}
}
public TextBox Pwd
...{
get
...{
return this.txtPwd;
}
}
protected void Page_Load(object sender, EventArgs e)
...{
this.btnGoOtherPage.PostBackUrl = "PageTransTest2.aspx";
}
protected void btnGoOtherPage_Click(object sender, EventArgs e)
...{
}
}
(2)创建接收页面 PageTransTest2.aspx
前台代码:
<%
...
@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTransTest2.aspx.cs" Inherits="Front_Test_PageTransTest2"
%>
<% ... @ PreviousPageType VirtualPath="PageTransTest1.aspx" %>
<! 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 > 跨页面传送—接收页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< table border ="0" width ="100%" cellpadding ="4" cellspacing ="1" >
< tr >
< td >
姓名: < asp:Label ID ="lUid" runat ="server" ></ asp:Label ></ td >
</ tr >
< tr >
< td >
密码: < asp:Label ID ="lPwd" runat ="server" ></ asp:Label ></ td >
</ tr >
< tr >
< td >
< asp:HyperLink ID ="HyperLink1" runat ="server" NavigateUrl ="PageTransTest1.aspx" > [返回] </ asp:HyperLink ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
<% ... @ PreviousPageType VirtualPath="PageTransTest1.aspx" %>
<! 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 > 跨页面传送—接收页 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< table border ="0" width ="100%" cellpadding ="4" cellspacing ="1" >
< tr >
< td >
姓名: < asp:Label ID ="lUid" runat ="server" ></ asp:Label ></ td >
</ tr >
< tr >
< td >
密码: < asp:Label ID ="lPwd" runat ="server" ></ asp:Label ></ td >
</ tr >
< tr >
< td >
< asp:HyperLink ID ="HyperLink1" runat ="server" NavigateUrl ="PageTransTest1.aspx" > [返回] </ asp:HyperLink ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
后台代码:
using
System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Front_Test_PageTransTest2 : System.Web.UI.Page
... {
protected void Page_Load(object sender, EventArgs e)
...{
lUid.Text = PreviousPage.Uid.Text.ToString();
lPwd.Text = PreviousPage.Pwd.Text.ToString();
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Front_Test_PageTransTest2 : System.Web.UI.Page
... {
protected void Page_Load(object sender, EventArgs e)
...{
lUid.Text = PreviousPage.Uid.Text.ToString();
lPwd.Text = PreviousPage.Pwd.Text.ToString();
}
}
6、通过序列化的方式传递
通过序列化的方式进行页面间的值传送,此部分实例将通过一个跨站点的Session共享实例进行讲解。