Asp net Web页面之间传值问题研究.docx
《Asp net Web页面之间传值问题研究.docx》由会员分享,可在线阅读,更多相关《Asp net Web页面之间传值问题研究.docx(6页珍藏版)》请在冰豆网上搜索。
AspnetWeb页面之间传值问题研究
AWeb页面之间传值问题研究
摘要:
在A程序中,各个Web页面是相互孤立的,信息不能进行传递,如何高效地交换数据,是一个值得研究的问题。
Web页面之间传值的方法较多,但多数对性能消耗较大,利用MicrosoftVisualStudio2010开发平台,精选出三种性能高效的传值方法。
关键词:
Web程序开发;Web页面传值
0引言
AWeb页面之间传值有多种方法,性能好的Web传值方法有以下3种。
1查询字符串
所谓查询字符串,是采用?
name=wupingui之类的写法,在这一URL中,从问号(?
)开始到结尾的部分就是查询字符串。
在网页之间相互跳转,常常需要传值,如何传值就需要使用查询字符串,其代码如下:
在上述的url中,查询字符串有两个字段,一个字段是name,另外一个字段是salary,不论目标网页是相同Web应用程序中的网页还是外部网站的网页,查询字符串都可以顺利运行,而且目标网页不限于网页。
不过当目标网页是一个网页时,可以在目标网页中使用HttpRequest对象的QueryString属性来读取查询字符串的字段值。
在vs2010中新建一个页面employee.aspx,在页面上放置两个lable、两个TextBox和一个Button
在该页面的Button1_Click事件中增加以下代码:
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringname=this.TextBox1.Text;
stringsalary=this.TextBox2.Text;
Response.Redirect("salary.aspx?
name="+name+"&salary="+salary+"",true);
}
在页面salary.aspx页面Page_Load事件上增加以下代码:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
stringname=Request.QueryString["name"].ToString();
stringsalary=Request.QueryString["salary"].ToString();
Response.Write(“姓名为:
”+name+"");
Response.Write(“工资为:
”+salary);
}
}
在页面employee.aspx中,姓名文本框中输入wupingui,在工资文本框中输入2500。
点击用查询字符串传值按钮,跳转到页面salary.aspx,运行结果为:
姓名为:
wupingui;工资为:
2500。
2Server.Transfer
用查询字符串传值的数量大小受到限制,也IE6为例,URL最多只许含有2048个字符。
然而用Server.Transfer传值则没有此限制。
输入代码如下:
//获取窗体的数据集合
publicNameValueCollectionTicketData
{
get
{
returnRequest.Form;
}
}
//车次
string_TrainNumber;
publicstringTrainNumber
{
get{return_TrainNumber;}
set{_TrainNumber=value;}
}
//起点站
string_StartStation;
publicstringStartStation
{
get{return_StartStation;}
set{_StartStation=value;}
}
//终点站
string_EndStation;
publicstringEndStation
{
get{return_EndStation;}
set{_EndStation=value;}
}
//预订时间
DateTime_BookDate;
publicDateTimeBookDate
{
get{return_BookDate;}
set{_BookDate=value;}
}
//学生ID
int_StudentId;
publicintStudentId
{
get{return_StudentId;}
set{_StudentId=value;}
}
//联系方式
string_Phone;
publicstringPhone
{
get{return_Phone;}
set{_Phone=value;}
}
//备注
string_Remark;
publicstringRemark
{
get{return_Remark;}
set{_Remark=value;}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
TrainNumber="T9";
StartStation=“重庆”;
EndStation=“北京”;
BookDate=Convert.ToDateTime("2011/05/01");
StudentId=30111;
Phone="12345678";
Remark=“我马上要去北京”;
Server.Transfer("ServerTransfer01_Target.aspx");
}
将在另外一个页面ServerTransfer01_Target.aspx接收其信息:
其代码如下:
ServerTransfer01frmSource;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
frmSource=(ServerTransfer01)(HttpContext.Current.Handler);
NameValueCollectiondata=frmSource.TicketData;
txtTrainNumber.Text=data["txtTrainNumber"];
txtStartStation.Text=data["txtStartStation"];
txtEndStation.Text=data["txtEndStation"];
txtBookDate.Text=data["txtBookDate"];
txtStudentId.Text=data["txtStudentId"];
txtPhone.Text=data["txtPhone"];
txtRemark.Text=data["txtRemark"];
LblTrainNumber.Text=frmSource.TrainNumber;
LblStartStation.Text=frmSource.StartStation;
LblEndStation.Text=frmSource.EndStation;
LblBookDate.Text=Convert.ToString(frmSource.BookDate);
LblStudentId.Text=Convert.ToString(frmSource.StudentId);
LblPhone.Text=frmSource.Phone;
LblRemark.Text=frmSource.Remark;
}
}
3PreviousPages
打开MicrosoftVisualStudio2010,点击“文件”→“新建”→“项目”→“Web”→“新建项”→“ASP.NET空Web应用程序”,在名称框中输入“Previous”,点击确定。
在项目“Previous”中右击鼠标,选择“添加”→“新建项”→“Web窗体”,在名称框中保持默认值:
“WebForm1.aspx”。
同样操作增加WebForm2.aspx页。
在单击事件中输入代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
Server.Transfer("WebForm2.aspx");
}
声明属性如下:
publicstringName
{
get{return“这是我的姓名”;}
}
在界面WebForm2.aspx的标记试图在div标记中输入html代码如下:
<%@PreviousPageTypeVirtualPath="~/WebForm1.aspx"%>
在界面WebForm2.aspx的程序加载事件输入代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Page.PreviousPage!
=null)
{
//取得源网页控件Label1的属性值;
this.Label1.Text="Label1上的值:
"+((Label)(this.PreviousPage.FindControl("Label1"))).Text;
//取得源网页控件TextBox1的属性值;
this.Label2.Text="TextBox1的值:
"+((TextBox)(this.PreviousPage.FindControl("TextBox1"))).Text;
//取得源网页上属性的值
th