[ASP.NET]關於IsCrossPagePostBack,PostBackUrl(如何以post方式轉到另一個aspx)

剛看到 F6 Team ASP.NET父子視窗的應用,利用子視窗的Gridview選取一個值,傳回父視窗 ,
以及 MIS2000 Lab. 跨網頁公佈 Cross-Page Posting ,就想到好像以前有做各類似的範例,
找了一下 MSDN FORUM 回覆:如何以post方式轉到別一個網頁? 找到之前PO的這篇,
就把程式碼整理一下發佈在點部落,下次也比較好找。

剛看到 F6 Team ASP.NET父子視窗的應用,利用子視窗的Gridview選取一個值,傳回父視窗
以及 MIS2000 Lab. 跨網頁公佈 Cross-Page Posting ,就想到好像以前有做各類似的範例,
找了一下 MSDN FORUM  回覆:如何以post方式轉到別一個網頁? 找到之前PO的這篇,
就把程式碼整理一下發佈在點部落,下次也比較好找。

ASP.NET 2.0 裡有一各功能是 CrossPagePostBack ,可以比較透過設定的方式,來將目前頁面的資料,
POST到另一個ASPX 。
例如說 我有兩個網頁 A.aspx 按下按鈕後POSTBACK到 a2.aspx ,然後a2.apsx  可以透過 A.aspx
所提供出來的方法或屬性,直接做取得。

所以重點是 a.aspx 要設定 postbackurl
 


<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="A1.aspx.cs" Inherits="A1" Title="Untitled Page" %>

<%@ Register Src="UCMenu.ascx" TagName="UCMenu" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <uc1:UCMenu ID="UCMenu1" runat="server" />
    <br />

    <asp:Label ID="Label1" runat="server" Text="Label" Width="79px"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="A1" OnClick="Button1_Click" PostBackUrl="~/A2.aspx" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    
</asp:Content>

 

using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class A1 : System.Web.UI.Page
{

    protected void Button1_Click(object sender, System.EventArgs e)
    {

    }

    public string GetString()
    {
        string strTemp = TextBox1.Text;
        return strTemp;
    }
}


a2.aspx 則透過 PreviousPage 可以取到 A.aspx 的方法與屬性

<%@ PreviousPageType VirtualPath="~/A1.aspx" %>
 

 


A2.aspx 

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 A2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
        {
            //Label1.Text = ((A1)PreviousPage).GetTextBox;
            Label1.Text = PreviousPage.GetString();
        }
    }

備註一.之前1.1就可以做的到,是使用 Server.Transfer 或 Request.form 。
備註二.透過方法來取得 a.aspx 本身的資料,可以在方法內在加上一些判斷式,來過濾掉一些會發生的問題或檢查)