2010-09-17 95 views
1

是否可以使用跨頁面回發(或類似的方法,可能是Server.Transfer)將表單數據(比如數據集A)發佈到頁面,然後允許用戶添加一些額外的信息(比如數據集B),然後回傳到原始頁面的完整數據集合(A + B),然後流經正常的事件執行過程,類似於所有數據A + B在原始頁面上以正常回傳提交給自己?跨頁面回發並保留源頁面中的數據

我不希望第二頁有任何原始頁面的類型知識,它只需要提供兩個額外的提要併發送數據。通過這種方式,不同的頁面和控件可以使用此方法來獲取更多數據。

例如:

1可以有各種文字輸入的形式,並且兩個隱藏字段Hidden1 + Hidden2其是空的。

當頁面1上的表單被提交時,用戶會看到頁面2,他們完成該頁面,然後頁面1中的所有表單數據被回發到頁面1,但隱藏字段1 + 2已完成。然後第1頁提供了所有需要完成的信息。

我在想,也許第2頁只需要使用PreviousPage並將其發佈數據添加到它,然後將其發回到第1頁,但好像它來自第1頁而不是第2頁。但是我我不確定這是否可能,並且ASP.NET可能會將其視爲篡改數據?

這與this 'question'類似,但在該示例中,每個頁面都是特定於上一頁的頁面。

快樂改寫這一點,如果我不是特別清楚......

回答

0

首先創建一個讓您的信息和其打算從頁面移動到頁面,並填充數據的類。

在每個頁面中你都有一個對這個類的引用,一個變量,那個ether創建一個新的ether從前一頁中獲取它。您將其存儲在ViewState上

現在來自Page1 - > Page2。

您從第1頁的集page2.aspx設置,你可以得到的信息

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

,你通過讓他們將其發送至

PostBackUrl="Page2.aspx" 

在...

if (Page.PreviousPage != null) 
{ 
    if(Page.PreviousPage.IsCrossPagePostBack == true) 
    { 
     GetTheClass = PreviousPage.MyDataClass; 
    } 
} 

另一種手動方式是讓你的類可串行化,通過發佈將它作爲xml發送,並在下一個p年齡。

+0

嗯,我不知道如果這可以工作,如果一個抽象類持有兩個字段,將由第2頁填充,以便第2頁不需要知道其他領域,它可以只填寫和通過它在。雖然我不想讓頁面知道第1頁,而是指定虛擬路徑,但它可能只是將PreviousPage轉換爲具有該抽象類類型的公共屬性的特定類型的頁面? (並且任何實現此方法的頁面都需要具有這種類型的頁面) – Kasaku 2010-09-17 15:09:07

+0

@PirateKitten然後將它們作爲xml或簡單字符串結構從一個發送到另一個。 – Aristos 2010-09-17 15:30:08