跨页面传值Word格式.docx
《跨页面传值Word格式.docx》由会员分享,可在线阅读,更多相关《跨页面传值Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
![跨页面传值Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/22/7ebb16f2-4ce2-4072-b32c-99ddbe7d3877/7ebb16f2-4ce2-4072-b32c-99ddbe7d38771.gif)
}
编辑本段使用Application对象变量
Application对象之作用范围是整个全局,也就是说对所有用户都有效。
其常用之方法用Lock和UnLock。
Application["
]=Label1.Text;
Server.Transfer("
b.aspx"
);
//传值
stringname;
Application.Lock();
name=Application["
].ToString();
//取值
Application.UnLock();
编辑本段使用Session变量
想必这个肯定是大家使用中最常见之用法了,其操作与Application类似,作用于用户个人,所以,过量之存储会导致服务器内存资源之耗尽。
{
Session["
]=Label.Text;
name=Session["
//取值
编辑本段使用Cookie对象变量
这个也是大家常使用之方法,与Session一样,其是什对每一个用户而言之,但是有个本质之区别,即Cookie是存放在客户端之,而session是存放在服务器端之。
而且Cookie之使用要配合ASP.NET内置对象Request来使用。
HttpCookiecookie_name=newHttpCookie("
cookie_name.Value=Label1.Text;
Reponse.AppendCookie(cookie_name);
name=Request.Cookie["
].Value.ToString();
编辑本段使用Server.Transfer方法
这个才可以说是面象对象开发所使用之方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新之页面使用前一个页面之应答流,所以这个方法是完全面象对象之,简洁有效。
publicstringName
get{returnLabel1.Text;
}
anewWeb;
//实例a窗体
newWeb=(source)Context.Handler;
name=newWeb.Name;
9.3
参数传递
9.3.1
传值
9.3.2
传地址
9.3.3
过程参数
1.参数传递的三种途径
传地址、传值、传名.
把实参的地址传递给形参。
即调用过程把一个指向实参的存储地址的指针传递给被调用过程相应的形参。
1、实在参数是一个变量,则直接传递它的地址。
2、实在参数是表达式----计算值,放入一存储单元,传此存储单元地址
3、过程对形参的引用或赋值都被处理成对形式单元的间接访问(指针操作)
(1)programreference(input,output);
(2)vara,b:
integer;
(3)procedureswap({var}x,y:
integer);
(4)vartemp:
(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语言的参数传递使用的方式是传地址;
去掉var,则使用的方式是传值。
9.3.1
①在被调过程的活动记录中开辟形参的存储空间,这些存储位置即是我们所说的形参或形式单元。
②调用过程计算实参的值,并将它们的右值放在为形式单元开辟的空间中。
procedureswap(x,y:
vartemp:
begin
temp:
x:
=y;
y:
end;
调用swap(a,b)过程将不会影响a和b的值。
其结果等价于执行下列运算:
x:
=a;
y:
=b;
temp:
=x;
x:
9.3.2
传地址(变量参数)
例如:
过程swap(varx,y:
swap(a,b);
(a,b为调用时的实参)调用结果a,b的值被改变。
传值(值调用)
特点是对形式参数的任何运算不影响实参的值。
(值调用)
过程swap(x,y:
swap(a,b);
其结果:
a,b调用前的值不改变。
(1)swap(x,y)
(2)int*x,*y;
(3){inttemp;
(4)temp=*x;
*x=*y;
*y=temp;
(5)}
(6)main()
(7){inta=1,b=2;
(8)swap(&
a,&
b);
(9)printf(“aisnow%d,bisnow%d\n”,a,b);
(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)的结果是多少?
解:
传地址:
T:
=A+B=5,X:
=&
T;
Y:
A;
Z:
(即X所指的变量为T,Y,Z所指的变量是A)Y↑:
=Y↑+1=2+1=3(即A的值变为3)Z↑:
=Z↑+X↑=A+T=3+5=8
所以:
传地址的结果为:
8传值的结果为:
2
9.3.3
过程参数
将被调用的过程体复制到调用处,并将每个形参“文字地”替换成实参。
例:
传名时Print(A)的结果是多少?
传名:
经过P(A+B,A,A)函数调用,将实参的名传过去,X就是A+B,Y就是A,Z也是AY:
变为:
A:
=A+1=3Z:
=A+A+B=3+3+3=9所以传名的结果:
9
ASP.NET中页面传值
一、目前在ASP.NET中页面传值共有这么几种方式:
1、表单提交,
<
formaction="
target.aspx"
method="
post"
name="
form1"
>
inputname="
param1"
value="
1111"
/>
param2"
2222"
/form>
....
form1.submit();
此种方在ASP。
NET中无效,因为ASP。
NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。
2、传送页面:
Ahref="
target.aspx?
param1=1111&
param2=2222"
链接地址传送<
/A>
接收页面:
stringstr=Request["
]
3、Session共享
发送页面:
Session("
)="
;
按收页面
stringstr=Session("
).ToString();
4、Application共享
Application("
按收页面:
stringstr=Application("
此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
5、Cookie
6、Response.Redirect()方式
Response.Redirect("
)
接收页面:
向自身代码页传值可以写为:
Response.Redirect("
?
)
7、Server.Transfer()方式。
(适合传送大量数据)
Server.Transfer("
二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1-6的方法传值及其不便,而第7种方法确有一独特的优势!
但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:
以查询数据页面为例:
在查询页面中设置如下公有属性(QueryPage.aspx):
publicclassQueryPage:
System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.TextBoxtxtStaDate;
protectedSystem.Web.UI.WebControls.TextBoxtxtEndDate;
...
///<
summary>
///开始时间
/summary>
publicstringStaDate
get{returnthis.txtStaDate.Text;
}
set{this.txtStaDate.Text=value;
///结束时间
publicstringEndDate
get{returnthis.txtEndDate.Text;
set{this.txtEndDate.Text=value;
....
privatevoidbtnEnter_Click(objectsender,System.EventArgse)
Server.Transfer("
ResultPage.aspx"
在显示查询结果页面(ResultPage.aspx):
publicclassResultPage:
privatevoidPage_Load(objectsender,System.EventArgse)
{
//转换一下即可获得前一页面中输入的数据
QueryPagequeryPage=(QueryPage)Context.Handler;
Response.Write("
StaDate:
"
);
Response.Write(queryPage.StaDate);
br/>
EndDate:
Response.Write(queryPage.EndDate);
}
三、如果有许多查询页面共用一个结果页面的设置方法:
在这种方式中关键在于“QueryPagequeryPage=(QueryPage)Context.Handler;
”的转换,只有转换不依赖于特定的页面时即可实现。
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
///结果页面中要用到的值
publicclassQueryParams
privatestringstaDate;
privatestringendDate;
get{returnthis.staDate;
set{this.staDate=value;
get{returnthis.endDate;
set{this.endDate=value;
2、接口定义:
///定义查询接口。
publicinterfaceIQueryParams
///参数
QueryParamsParameters{get;
3、查询页面继承IQueryParams接口(QueryPage.aspx):
///查询页面,继承接口
publicclassQueryPage:
System.Web.UI.Page,IQueryParams
privateQueryParamsqueryParams;
///结果页面用到的参数
publicQueryParamsParameters
get
returnqueryParams;
//赋值
queryParams=newQueryParams();
queryParams.StaDate=this.txtStaDate.Text;
queryParams.EndDate=this.txtEndDate.Text
4、别外的页面也如此设置
5、接收页面(ResultPage.aspx):
publicclassResultPage:
QueryParamsqueryParams=newQueryParams();
IQueryParamsqueryInterface;
//实现该接口的页面
if(Context.HandlerisIQueryParams)
queryInterface=(IQueryParams)Context.Handler;
queryParams=queryInterface.Parameters;
Response.Write(queryParams.StaDate);
Response.Write(queryParams.EndDate);
ASP.NET页面传值的方法和一些实用技巧
一.使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect("
param1=hello&
param2=hi"
string
str
=
Request.QueryString["
string
str1
=Request.QueryString["
param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
设置Cookie:
HttpCookiecookie_name=newHttpCookie("
cookie_name.Value=Label1.Text;
Reponse.AppendCookie(cookie_name);
获取Cookie:
stringname=Request.Cookie["
三.使用Session变量(session是存放在服务器端的)
设置Session:
Session["
]="
hello"
获取Session:
stringname=Session["
四.使用Application对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。
设置Application:
Application["
]=="
获取Application:
name=Application["
五.PostBackUrl()方法
default.aspx页面:
Code
1