2010-11-12 78 views
1

我發現了一個解決方案來滿足我的特定需求,但我想我會問這個問題。跨頁面發佈主頁

假設我有一個帶有母版頁的典型數據錄入Web項目 - 而不是使用Session變量,並使用Response.Redirect或Server.Transfer將屬於通過數據輸入方式的用戶重定向到下一步,我寧願使用跨頁面發佈。

我試圖建立我的網站之一,在這種方式下,與像一個按鈕:

<asp:Button ID="next" text="next" runat="server" PostBackUrl="EnterInfo.aspx" /> 

當我就去考了變化,我<form>標籤都沒有改變:

<form id="aspnetForm" action="SelectUser.aspx" method="post" name="aspnetForm"> 

我是否錯過了這裏的任何細節,或者是跨頁面發佈而不是用於主頁面?

編輯: 上面的表單標籤是呈現在客戶端上的標籤 - 而不是服務器端標籤。我已閱讀MSDN文章(like this one),這些文章似乎明確聲明跨頁面發佈實際上是將該表單發佈到另一個頁面。

也許我誤解了這個改變了表單的動作,但是不管我的源表單在我的目標上的任何地方不會調用任何東西,當我點擊我改變的按鈕時 - 它只是回發到當前頁面。

回答

1

我不認爲使用PostBackUrl屬性會更改標記中表單的action,因爲可能有許多其他控件只是執行普通的回發。我想象一下,當按下這個特定的按鈕時,一些javascript被用來改變表格的action

1

您需要在數據來自的第二頁上放置聲明。

所以,你必須:

PostBackUrl="EnterInfo.aspx" 

在EnterInfo.aspx聲明,你可以得到的信息

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

,你通過讓他們...

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

一項PostBackUrl不要更改表單url。

一些參考。
ASP.NET how to access public properties?

Cross-page postbacks and back again retaining data from source page

詩 起初我以爲你只需要輸入你所看到的渲染,但如果並非如此,因爲@Mystere指出你需要一個asp.net中運行這些形成。

+0

是的,您是正確的 - 我粘貼的表單標記是呈現的標記。 – jwiscarson 2010-11-13 03:39:39

0

首先,正如Graham所說。PostBackUrl不會更改回發操作。其次,您只能在啓用了asp.net的表單上使用PostBackUrl,這意味着表單必須具有runat =「server」