所谓回送就是传送回原来的页面,回送包含在初始页面上收集的所有窗体信息,以备在需要时处理。下面就是一个简单的回送的例子:
在aspx页面上放一个label控件和一个button控件,在页面的Page_Load事件中加上如下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
Label1.Text = "回调了!";
}
else
Label1.Text = "不是回调!";
}
运行时,在没单击按钮时,label控件显示:“不是回调!”。按了按钮后显示:“回调了!”。
由上可以看出页面的回调是使用属性“IsPostBack”来检测的。
跨页面传送
例如:有两个页面A和B。A页面有一个TextBox和一个Button控件,用来得到用户的姓名这一消息。而页面B则获得A中用户输入的姓名信息,并显示:“XXX,欢迎您!”
上面这个例子就得使用页面传送,也就是B页面中的姓名信息需要从A页面中的TextBox获得!如果B页面不是经由A页面进入的(比如再调试时我们设置B页面为起始页),那么B页面中的XXX这一变量就为空!此时我们让B页面的显示为“没有经过正规渠道进入!”
为了实现跨页面传送,有两个方法:
方法一:
在A页面的Button控件的PostBackUrl设置为页面B的路径,同时在B页面的Load_Page事件中添加以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage.IsCrossPagePostBack)
{
TextBox temp = (TextBox)PreviousPage.FindControl("TextBoxName");
Label1.Text = temp.Text;
}
else
Label1.Text = "没有经过正规渠道进入!";
}
从上面的代码可以看出,首先通过PreviousPage.IsCrossPageBack属性来判断是不是有跨页面传送这一“事件”发生。如果有,首先实例化一个你和先前页面的那个你要取值的控件类型的对象。
方法二:
创建A页面中的你要传送给后面的控件的属性。
在A.aspx.cs中加入:
public TextBox NameTextBox
{
get
{
return TextBoxName;
}
}
在B页面调用时就直接调用PreviousPage.NameTextBox.Text属性即可!