ASP.NET向导步骤:将表单数据转到下一页?

时间:2009-09-30 19:58:41

标签: asp.net

我无法弄清楚如何将表格数据从向导步骤控制传递到新页面。我几天前发布了THIS POST,但这里的答案并没有真正帮助我,因为我甚至无法从新页面上的TextBox中获取值。

我尝试将隐藏字段的内容放在<asp:TextBox ID="amount" runat="server" Text="tester"></asp:TextBox>,但Request.Form["amount"]仍为空。

如何将表单数据从向导步骤控件传递到新页面?这应该真的那么难吗?

3 个答案:

答案 0 :(得分:2)

我们在向导中收集的信息通常会转换为业务对象,然后我们只在Session变量中传递该对象。这样我们就可以在任何页面上访问它。

答案 1 :(得分:1)

会话变量似乎更容易使用:

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();
}

答案 2 :(得分: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"];