如何将细节传递给多个表单而不将其保存在数据库中

时间:2014-02-28 06:26:27

标签: c# asp.net

我有3个申请人注册表,每个表单都包含一个insert Query,可以将一些详细信息插入数据库。当申请人填写他的第1个表格并点击提交按钮然后将他的信息插入到数据库中,这里为那些申请人生成一个注册ID并跳转到第二个表格同样的过程发生在第二个表格然后跳到第三个表格最后在第3表申请人获得他的注册ID。

但是在这里我希望这些所有插入查询都在第3个表单上运行,直到申请人没有到达第3表格没有任何细节插入到数据库中并且当他到达第3表格时那么这里所有的插入查询都应该运行。

但是我能理解如何将第一种形式的数据传递给第二种形式然后传递给第三种形式。因为这里有很多细节可以在第1和第2表格中找到。

请帮助我,我正在进行一个实时项目,我正在使用C#Asp.net。

3 个答案:

答案 0 :(得分:1)

最简单的方法是只使用一个包含多个视图的表单。

您可以根据自己的要求使用asp.net多视图控件或3个HTML div。

答案 1 :(得分:0)

嗯,我在WebForms方面不是很好,但是这里有一个关于如何在Web表单之间传递数据的简单介绍(可能有更简单和更好的方法):

步骤1.aspx 您输入第一个号码并按下按钮将其提升为电源2,                  将结果保存到会话并重定向到第2步

<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    </div>
</form>


public partial class Step1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) {  }

    protected void Button1_Click(object sender, EventArgs e)
    {
        var n = Convert.ToInt32(TextBox1.Text);
        Session["temp"] = n * n;
        Response.Redirect("Step2.aspx");
    }
}

步骤2.aspx 显示表单1的结果,将其乘以新输入的数字,              将结果保存到会话并重定向到第3步

<form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
        * 
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
</form>

public partial class Step2 : System.Web.UI.Page
{
    private int? firstValue;
    protected void Page_Load(object sender, EventArgs e)
    {
        firstValue = (Session["temp"] as int?);
        Label1.Text = firstValue.ToString();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        var multiplicator = Convert.ToInt32(TextBox1.Text);
        var result = firstValue*multiplicator;
        Session["result"] = result;
        Response.Redirect("Step3.aspx");
    }
}

步骤3.aspx 显示表单2的结果

<form id="form1" runat="server">
    <div>
        Result is <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
</form>

public partial class Step3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var res = (Session["result"] as int?);
        Label1.Text = res.ToString();
    }
}

答案 2 :(得分:0)

你不能对所有3个表格使用同一页面吗? 尝试使用面板一次显示一个表单并隐藏其他两个表单 所以文本框的值将保持不变 就像页面加载一样,只显示1个表单。然后当你提交时,不要清除文本框的值,只是隐藏上一个面板,然后提交2nf表单显示第3个,然后传递插入查询与所有文本框的值,并立即将所有数据添加到数据库 试试