页面中传递数据的三种方法:cookies,session,application,
还有一种把当前页面中的数据直接传递给另一个页面:
页面1的aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="page1.aspx.cs" Inherits="跨页面传递.page1" %>
<!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">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="提交到页面"
PostBackUrl="~/page2.aspx" onclick="Button1_Click" />
</div>
</form>
</body>
</html>
Page1.aspx.cs代码加入如下属性:
public string username
{
get { return this.TextBox1.Text; }
}
Page2.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace 跨页面传递
{
public partial class page2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.PreviousPage != null)
{
this.Response.Write(PreviousPage.username);
}
}
}
}
Page2.aspx:头部代码修改
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="page2.aspx.cs" Inherits="跨页面传递.page2" %>
<%@ PreviousPageType VirtualPath="~/page1.aspx"%>
“这个代码是指定处理页为page1”
上述代码原理是通过页面1的按钮把数据传递给页面2,按钮代码中设置了postbackurl属性:PostBackUrl="~/page2.aspx" onclick="Button1_Click"
这表示处理页是page2
而在page2的aspx.cs中,通过PreviousPage.username得到页面1传过来的username属性。从而输出。
还有一种方法,这种方法直接通过查找页面1中的控件名称而得到控件的属性值:
Page1.aspx以及page1.aspx.cs都不变page2.aspx中去掉<%@ PreviousPageType VirtualPath="~/page1.aspx"%> 在apsx.cs中把原来的代码删除,改写为
TextBox mytextbox = PreviousPage.FindControl("TextBox1") as TextBox;
Response.Write(mytextbox.Text);
用as TextBox转换比通过用(TextBox)强制类型转换好。因为强制类型转换会出错。传递给页面2的控件如果不是textbox叫textbox1就会出错