2009-09-30 62 views
1

我不知道如何將嚮導步驟控件的表單數據傳遞到新頁面。前幾天我發佈了THIS POST,但這裏的答案並沒有真正幫助我,因爲我甚至無法從新頁面上的TextBox獲取值。ASP.NET嚮導步驟:獲取表單數據到下一頁?

我試圖把這個insfield的insted,但<asp:TextBox ID="amount" runat="server" Text="tester"></asp:TextBox>,但Request.Form["amount"]仍然只是空。

如何將表單數據從嚮導步驟控件傳遞到新頁面?這真的很難嗎?

+0

嘗試將您的HiddenField放在嚮導的外面並創建一個FinishNavigationTemplate。在那裏你創建一個帶有PostBackUrl的按鈕,它將把HiddenField發佈到下一頁。看起來,使用剛剛重定向到的FinishDestinationPageUrl屬性時,嚮導不會發布到下一頁。我有一個代碼示例,如果你需要它 – 2009-09-30 20:56:20

回答

2

有關我們在嚮導中收集的信息通常會翻譯成業務對象,那麼我們只需將該對象傳遞給Session變量即可。這樣我們就可以在任何頁面上訪問它。

+0

這是有益的,但我想使用HiddenField的原因是,我必須將值傳遞給我的在線支付公司提供給我的腳本。該腳本希望將總量作爲隱藏字段傳遞,因此會話不能真正幫助我。我猜? – Poku 2009-09-30 20:22:34

+0

所以你不是那個消耗你的代碼的人?在這種情況下,您的問題會產生誤導,並且在您的在線支付公司的API沒有提供良好答案的情況下難以置信地難以實現。請重新說出您的問題,並準確描述您正在嘗試做的事情。 – Juliet 2009-09-30 20:27:26

+0

然後在新頁面或嚮導的最後一步,檢索會話變量,並將對象中的字段發佈到包含該腳本的頁面。我仍然很困惑,爲什麼你需要這樣做,你試圖使用哪個API?貝寶?亞馬遜? – 2009-09-30 20:32:52

1

Session變量似乎更容易使用:

Default.aspx的標記:

<asp:Wizard runat="server" ID="wizAwesome" FinishDestinationPageUrl="~/TestPage.aspx" OnFinishButtonClick="wizAwesome_FinishButtonClick"> 
     <WizardSteps> 
      <asp:WizardStep ID="stepRock" runat="server" Title="Rock!"> 
       This is a wizard step. 

       <asp:HiddenField runat="server" ID="hiddenName" Value="Juliet" /> 
      </asp:WizardStep> 
     </WizardSteps> 

    </asp:Wizard> 

Default.aspx.cs

protected void wizAwesome_FinishButtonClick(object sender, WizardNavigationEventArgs e) 
{ 
    Session["hiddenName"] = hiddenName.Value; 
} 

TestPage.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    lblName.Text = Session["hiddenName"].ToString(); 
} 
+0

但是如果你需要將幾個字段發送到下一頁,你會怎麼做?我希望你不會爲它們創建一個Session變量 – 2009-09-30 20:18:55

+0

你只需創建一個表示你想要傳遞的所有字段的類,然後在一個單獨的會話變量中保存一個類的實例。 – Juliet 2009-09-30 20:24:11

0

你HiddenField需要位於嚮導像下面的外面,你需要添加一個FinishNavigationTemplate該數據帖到新頁面

<asp:Wizard runat="server" ID="wzd_Amount"> 
    <WizardSteps> 
     <asp:WizardStep ID="step_Amount" runat="server"> 
      This is a wizard step. 
     </asp:WizardStep> 
    </WizardSteps> 
    <FinishNavigationTemplate> 
     <asp:Button runat="server" ID="btn_Finish" PostBackUrl="~/Labs/TestPage.aspx" /> 
    </FinishNavigationTemplate> 
</asp:Wizard> 
<asp:HiddenField runat="server" ID="hdf_Amount" Value="Test" /> 

在其他頁面,您可以只要求像這樣

lbl_Test.Text = Request["hdf_Amount"]; 
數據