ASP.NET 提供了两种用于在页与页之间传输控件的机制。您可以使用 Transfer 方法在页之间传输处理,也可以通过将页 URL 指派给实现 IButtonControl 接口的按钮控件的 PostBackUrl 属性来发出跨页请求。
看个例子来理解IsCrossPagePostBack的作用:
先创建crossPage_before.aspx和crossPage_after_cs.aspx的2个aspx页面
crossPage_after_cs.aspx 画面中分别设置了1个textbox,2个按钮和1个link。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="crossPage_before.aspx.cs" Inherits="crossPage_before" %>
<!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="txtName" runat="server"></asp:TextBox>
<br />
<asp:Button ID="btnPostBack" runat="server" Text="PostBack" PostBackUrl="~/crossPage_after_cs.aspx" /><br />
<asp:Button ID="btnTransfer" runat="server" Text="Transfer" OnClick="btnTransfer_Click" /><br />
<a href="crossPage_after_cs.aspx">Link</a>
</div>
</form>
</body>
</html>
PostBack按钮的PostBackUrl属性中选择所要迁移的crossPage_before.aspx的画面;Transfer按钮则双击进入OnClick事件中写入画面之间迁移的Transfer方法。
protected void btnTransfer_Click(object sender, EventArgs e)
{
Server.Transfer("crossPage_after_cs.aspx");
}
crossPage_before.aspx画面中设置了一个Literal控件
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="crossPage_after_cs.aspx.cs" Inherits="crossPage_after_cs" %>
<!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:Literal ID="ltrGreet" runat="server"></asp:Literal></div>
</form>
</body>
</html>
在Page_Load中写入以下代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class crossPage_after_cs : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage != null)
{
if (Page.PreviousPage.IsCrossPagePostBack)
{
TextBox txtName = (TextBox)Page.PreviousPage.FindControl("txtName");
ltrGreet.Text = "您好," + txtName.Text + "朋友!";
}
else
{
ltrGreet.Text = "画面迁移而已";
}
}
}
}
运行crossPage_before.aspx页面,我们在文本框里输入自己的名字,点击PostBack按钮可以看到迁移画面crossPage_after_cs.aspx上"您好,XXX先生!"字样,而其Transfer按钮和link则显示"画面迁移而已"
IsCrossPagePostBack方法也就是说来判断是否是Post,还是Transfer这样只是迁移画面的动作。