1、Asp net Web页面之间传值问题研究A Web页面之间传值问题研究摘 要:在A程序中,各个Web页面是相互孤立的,信息不能进行传递,如何高效地交换数据,是一个值得研究的问题。Web页面之间传值的方法较多,但多数对性能消耗较大,利用Microsoft Visual Studio 2010开发平台,精选出三种性能高效的传值方法。关键词: Web程序开发;Web页面传值0 引言 A Web页面之间传值有多种方法,性能好的Web传值方法有以下3种。 1 查询字符串 所谓查询字符串,是采用?name=wupingui之类的写法,在这一URL中,从问号(?)开始到结尾的部分就是查询字符串。 在网页之
2、间相互跳转,常常需要传值,如何传值就需要使用查询字符串,其代码如下: 在上述的url中,查询字符串有两个字段,一个字段是name,另外一个字段是salary,不论目标网页是相同Web应用程序中的网页还是外部网站的网页,查询字符串都可以顺利运行,而且目标网页不限于网页。不过当目标网页是一个网页时,可以在目标网页中使用HttpRequest对象的QueryString属性来读取查询字符串的字段值。 在vs2010中新建一个页面employee.aspx,在页面上放置两个lable、两个TextBox和一个Button 在该页面的Button1_Click事件中增加以下代码: protected v
3、oid Button1_Click(object sender, EventArgs e) string name = this.TextBox1.Text; string salary = this.TextBox2.Text; Response.Redirect(salary.aspx?name= + name + &salary= + salary + ,true); 在页面salary.aspx页面Page_Load事件上增加以下代码: protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) strin
4、g name = Request.QueryStringname.ToString(); string salary = Request.QueryStringsalary.ToString(); Response.Write(“姓名为:” + name + ); Response.Write(“工资为:” + salary); 在页面employee.aspx中,姓名文本框中输入wupingui,在工资文本框中输入2500。点击用查询字符串传值按钮,跳转到页面salary.aspx,运行结果为:姓名为: wupingui;工资为:2500。 2 Server.Transfer 用查询字符串传
5、值的数量大小受到限制,也IE6为例,URL最多只许含有2048个字符。然而用Server.Transfer传值则没有此限制。 输入代码如下: /获取窗体的数据集合 public NameValueCollection TicketData get return Request.Form; /车次 string _TrainNumber; public string TrainNumber get return _TrainNumber; set _TrainNumber = value; /起点站 string _StartStation; public string StartStation
6、 get return _StartStation; set _StartStation = value; /终点站 string _EndStation; public string EndStation get return _EndStation; set _EndStation = value; /预订时间 DateTime _BookDate; public DateTime BookDate get return _BookDate; set _BookDate = value; /学生ID int _StudentId; public int StudentId get retu
7、rn _StudentId; set _StudentId = value; /联系方式 string _Phone; public string Phone get return _Phone; set _Phone = value; /备注 string _Remark; public string Remark get return _Remark; set _Remark = value; protected void Button1_Click(object sender, EventArgs e) TrainNumber = T9; StartStation = “重庆”; End
8、Station = “北京”; BookDate =Convert.ToDateTime(2011/05/01); StudentId = 30111; Phone = 12345678; Remark = “我马上要去北京”; Server.Transfer(ServerTransfer01_Target.aspx); 将在另外一个页面ServerTransfer01_Target.aspx接收其信息: 其代码如下: ServerTransfer01 frmSource; protected void Page_Load(object sender, EventArgs e) if (!Is
9、PostBack) frmSource = (ServerTransfer01)(HttpContext.Current.Handler); NameValueCollection data = frmSource.TicketData; txtTrainNumber.Text = datatxtTrainNumber; txtStartStation.Text = datatxtStartStation; txtEndStation.Text = datatxtEndStation; txtBookDate.Text = datatxtBookDate; txtStudentId.Text
10、= datatxtStudentId; txtPhone.Text = datatxtPhone; txtRemark.Text = datatxtRemark; LblTrainNumber.Text = frmSource.TrainNumber; LblStartStation.Text = frmSource.StartStation; LblEndStation.Text = frmSource.EndStation; LblBookDate.Text = Convert.ToString(frmSource.BookDate); LblStudentId.Text = Conver
11、t.ToString(frmSource.StudentId); LblPhone.Text = frmSource.Phone; LblRemark.Text = frmSource.Remark; 3 PreviousPages 打开Microsoft Visual Studio 2010,点击“文件”“新建”“项目”“Web”“新建项”“ASP.NET空Web应用程序”,在名称框中输入“Previous”,点击确定。 在项目“Previous”中右击鼠标,选择“添加”“新建项”“Web窗体”,在名称框中保持默认值:“WebForm1.aspx”。同样操作增加WebForm2.aspx页。
12、 在单击事件中输入代码如下: protected void Button1_Click(object sender, EventArgs e) Server.Transfer(WebForm2.aspx); 声明属性如下: public string Name get return “这是我的姓名”; 在界面WebForm2.aspx的标记试图在div标记中输入html代码如下: 在界面WebForm2.aspx的程序加载事件输入代码如下: protected void Page_Load(object sender, EventArgs e) 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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1