2009-09-30 67 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"]; 
数据