跨页面传值 .pdf
《跨页面传值 .pdf》由会员分享,可在线阅读,更多相关《跨页面传值 .pdf(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、跨页面传值目录跨页面传值使用 Application 对象变量使用 Session 变量使用 Cookie 对象变量使用 Server.Transfer方法编辑本段 跨页面传值定义:统指 WEB 页面之间的传值, 包括简单的页面表单传值和页面程序中的变量传值。变量传值:可分为简单的变量如 int a,string b; 等,还包括对复杂的对象进行传递。现以 为例ASP.NET 跨页面传值技巧总结1. 使用 QueryString变量QueryString 是一种非常简单之传值方式,他可以将传送之值显示在浏览器之地址栏中。 如果是传递一个或多个安全性要求不高或是结构简单之数值时,可以使用这个方法
2、。 但是对于传递数组或对象之话,就不能用这个方法了。 下面是一个例子:a.aspx 之 C# 代码private void Button1_Click(object sender, System.EventArgs e) string s_url; s_url = b.aspx?name= + Label1.Text; Response.Redirect(s_url); 或者: b.aspx 中 C# 代码private void Page_Load(object sender, EventArgs e) Label2.Text = Request.QueryStringname; 编辑本段
3、使用 Application 对象变量Application对象之作用范围是整个全局,也就是说对所有用户都有效。其常用之方法用 Lock 和 UnLock。a.aspx 之 C# 代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - private void Button1_Click(object sender, System.EventArgs e) Applicationname = Label1.Text; Server
4、.Transfer(b.aspx); /传值 b.aspx 中 C# 代码private void Page_Load(object sender, EventArgs e) string name; Application.Lock(); name = Applicationname.ToString(); /取值Application.UnLock(); 编辑本段 使用 Session 变量想必这个肯定是大家使用中最常见之用法了,其操作与Application类似,作用于用户个人, 所以,过量之存储会导致服务器内存资源之耗尽。a.aspx 之 C# 代码private void Butto
5、n1_Click(object sender, System.EventArgs e) Sessionname = Label.Text; /传值 b.aspx 中 C# 代码private void Page_Load(object sender, EventArgs e) string name; name = Sessionname.ToString(); / 取值 编辑本段 使用 Cookie 对象变量这个也是大家常使用之方法, 与 Session 一样, 其是什对每一个用户而言之,但是有个本质之区别,即Cookie 是存放在客户端之,而session 是存放在服务器端之。 而且 Co
6、okie 之使用要配合 ASP.NET 内置对象 Request 来使用。a.aspx 之 C# 代码private void Button1_Click(object sender, System.EventArgs e) HttpCookie cookie_name = new HttpCookie(name); cookie_name.Value = Label1.Text; Reponse.AppendCookie(cookie_name); Server.Transfer(b.aspx); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
7、- - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - b.aspx 中 C# 代码private void Page_Load(object sender, EventArgs e) string name; name = Request.Cookiename.Value.ToString(); 编辑本段 使用 Server.Transfer方法这个才可以说是面象对象开发所使用之方法,其使用 Server.Transfer方法把流程从当前页面引导到另一个页面中,新之页面使用前一个页面之应答流,所以这个方法是完全面象对象之,简
8、洁有效。a.aspx 之 C# 代码public string Name get return Label1.Text; private void Button1_Click(object sender, System.EventArgs e) Server.Transfer(b.aspx); b.aspx 中 C# 代码private void Page_Load(object sender, EventArgs e) a newWeb; / 实例 a 窗体newWeb = (source)Context.Handler; string name; name = newWeb.Name; 9
9、.3 参数传递9.3.1 传值9.3.2 传地址9.3.3 过程参数1. 参数传递的三种途径传地址、传值、传名 . 把实参的地址传递给形参。 即调用过程把一个指向实参的存储地址的指针传递给被调用过程相应的形参。 1、实在参数是一个变量,则直接传递它的地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - 2、实在参数是表达式 -计算值,放入一存储单元,传此存储单元地址 3、过程对形参的引用或赋值都被处理成对形式单元的间接访问(指
10、针操作) (1)program reference(input,output); (2)var a,b:integer; (3)procedure swap(var x,y:integer); (4) var temp:integer; (5) begin (6) temp:=x; (7) x:=y; (8) y:=temp (9) end; (10)begin (11) a:=1; b:=2; (12) swap(a,b); (13) writeln( a= ,a);writeln( b= ,b) (14)end. PASCAL 程序有关键字 var 时, PASCAL 语言的参数传递使用的
11、方式是传地址;去掉 var ,则使用的方式是传值。9.3.1 传值在被调过程的活动记录中开辟形参的存储空间,这些存储位置即是我们所说的形参或形式单元。调用过程计算实参的值,并将它们的右值放在为形式单元开辟的空间中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - 调用过程计算实参的值,并将它们的右值放在为形式单元开辟的空间中。procedure swap( x,y:integer); var temp:integer; begi
12、n temp:=x; x:=y ; y:=temp end ;调用 swap(a,b) 过程将不会影响 a 和 b 的值。 其结果等价于执行下列运算:x :=a ; y :=b ; temp :=x ; x :=y ; y :=temp 9.3 参数传递9.3.1 传值9.3.2 传地址9.3.3 过程参数9.3.2 传地址传地址(变量参数)例如:过程 swap(varx,y:integer);swap(a,b);( a,b 为调用时的实参 )调用结果 a,b 的值被改变。传值(值调用)特点是对形式参数的任何运算不影响实参的值。(值调用)例如:过程 swap(x,y:integer); swa
13、p(a,b);其结果 :a,b 调用前的值不改变。(1)swap(x,y) (2)int *x,*y; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - (3) int temp; (4) temp=*x; *x=*y; *y=temp; (5) (6)main( ) (7) int a=1,b=2; (8) swap(&a,&b); (9) printf( “ a is now %d,b is now %dn ” ,a,b);
14、(10) 在一个值调用过程中使用指针的 C 程序 在 C 程序中传地址,用指针实现。例 :主程序 A : 2 ; B:=3; P(A+B, A, A) Print(A); 子程序: P(X, Y ,Z ) Y:=Y+1; Z:=Z+X; 问传地址和传值 Print ( A )的结果是多少?解: 主程序 A : 2 ; B:=3; P(A+B, A, A) Print(A); 子程序: P(X, Y ,Z ) Y:=Y+1; Z:=Z+X; 传地址: T : A B 5 , X := &T ; Y := &A ; Z := &A ; (即 X 所指的变量为 T , Y ,Z 所指的变量是 A )
15、 Y :=Y +1=2+1=3 (即 A 的值变为 3 ) Z :=Z +X = A T 3 5 8 所以:传地址的结果为: 8 传值的结果为: 2 9.3 参数传递9.3.1 传值9.3.2 传地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - 9.3.3 过程参数9.3.3 过程参数将被调用的过程体复制到调用处,并将每个形参“ 文字地 ” 替换成实参。例:主程序 A : 2 ; B:=3; P(A+B, A, A) Pri
16、nt(A); 子程序: P(X, Y ,Z ) Y:=Y+1; Z:=Z+X; 传名时 Print(A) 的结果是多少?解: 传名: 经过 P(A+B, A, A) 函数调用,将实参的名传过去, X 就是 A B ,Y 就是 A , Z 也是 A Y:=Y+1; 变为: A :=A+1 3 Z:=Z+X; 变为: A :=A+A B 3 3 3 9 所以传名的结果: 9 ASP.NET 中页面传值一、目前在 ASP.NET中页面传值共有这么几种方式:1、表单提交, . form1.submit(); . 此种方在 ASP 。NET中无效,因为 ASP 。NET的表单总是提交到自身页面,如果要提
17、交到别一页面,需要特殊处理。2、传送页面: 链接地址传送 接收页面: string str = Requestparam1 3、Session 共享发送页面: Session(param1) = 1111; 按收页面 string str = Session(param1).ToString(); 4、Application共享名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - 发送页面: Application(param1)
18、= 1111; 按收页面: string str = Application(param1).ToString();此种方法不常使用, 因为 Application在一个应用程序域范围共享, 所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。5、Cookie 6、Response.Redirect()方式 Response.Redirect(target.aspx?param1=1111¶m2=2222) 接收页面: string str = Requestparam1 向自身代码页传值可以写为:Response.Redirect(?param1=1111¶m2=
19、2222) 7、Server.Transfer()方式。(适合传送大量数据) Server.Transfer(target.aspx?param1=1111¶m2=2222) 接收页面: string str = Requestparam1 二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时, 用 1 6 的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:以查询数据页面为例:在查询页面中设置如下公有属性(QueryPage.aspx) : public class QueryPage : System.Web
20、.UI.Page protected System.Web.UI.WebControls.TextBox txtStaDate; protected System.Web.UI.WebControls.TextBox txtEndDate; . / / 开始时间/ public string StaDate get return this.txtStaDate.Text; setthis.txtStaDate.Text = value; / / 结束时间/ public string EndDate get return this.txtEndDate.Text; setthis.txtEnd
21、Date.Text = value; . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - private void btnEnter_Click(object sender, System.EventArgs e) Server.Transfer(ResultPage.aspx); 在显示查询结果页面 (ResultPage.aspx): public class ResultPage : System.Web.UI.Page
22、 private void Page_Load(object sender, System.EventArgs e) / 转换一下即可获得前一页面中输入的数据QueryPage queryPage = ( QueryPage )Context.Handler; Response.Write( StaDate: ); Response.Write( queryPage.StaDate ); Response.Write( EndDate: ); Response.Write( queryPage.EndDate ); 三、如果有许多查询页面共用一个结果页面的设置方法:在这种方式中关键在于“ Qu
23、eryPage queryPage = ( QueryPage )Context.Handler; ”的转换,只有转换不依赖于特定的页面时即可实现。如果让所有的查询页面都继承一个接口,在该接口中定义一个方法, 该方法的唯一作用就是让结果页面获得构建结果时所需的参数, 就可实现多页面共享一个结果页面操作 !1、先定义一个类,用该类放置所有查询参数:/ / 结果页面中要用到的值/ public class QueryParams private string staDate; private string endDate; / / 开始时间/ public string StaDate 名师资料总
24、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 22 页 - - - - - - - - - get return this.staDate; setthis.staDate = value; / / 结束时间/ public string EndDate get return this.endDate; setthis.endDate = value; 2、接口定义:/ / 定义查询接口。/ public interface IQueryParams / / 参数/ QueryP
25、arams Parametersget; 3、查询页面继承 IQueryParams 接口(QueryPage.aspx) :/ / 查询页面,继承接口/ public class QueryPage : System.Web.UI.Page, IQueryParams protected System.Web.UI.WebControls.TextBox txtStaDate; protected System.Web.UI.WebControls.TextBox txtEndDate; private QueryParams queryParams; . / / 结果页面用到的参数/ pu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 跨页面传值 2022 页面
限制150内