在重复表单提交尝试中保留信息

时间:2011-12-01 20:19:29

标签: c# asp.net

以下是我正在处理的注册页面的简化版本。

当用户点击按钮时,我需要从信用卡中收钱。然后,如果事务成功,则创建新用户帐户。

我的问题是处理信用卡交易成功的情况,但创建用户交易失败。如果用户需要更正表格中的某些信息,我不想再次为他们的卡充电 我的PaymentStatus变量包含10,具体取决于事务是否成功。

这会在多个按钮点击中持续存在吗?如果确实如此,这是否是在用户需要更正表格中某些数据的情况下避免重复交易的可靠方法? 我可以将信息保存到数据库中,但我的偏好是在交易的后期存在UserID以将付款与之关联。

protected void btn_Click(object sender, ImageClickEventArgs e)
{
    int PaymentStatus = ChargeCardForSignUpFee(userInfo);

    if (PaymentStatus == 0)
    {
         Label1.Text = "Your credit card is invalid.  Please try again.";
    }
    else
    {

        try
        {
        MembershipUser newUser = Membership.CreateUser(userInfo);
            if (newUser == null)
            {
                lblStatus.Text = GetErrorMessage(status);
            }
            else
            {
                CreateCustomer(userInfo);
                SendWelcomeEmail(userInfo.email);
                FormsAuthentication.SetAuthCookie(userName, true);

                Response.Redirect("welcomepage.aspx");
            }
        }
        catch
        {
            lblStatus.Text = "An error occurred while creating your account. "+
                "Please check your information and try again. "+ 
                ex.Message;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

首先验证数据,然后为卡充电。在验证数据之前对卡充电是没有意义的。

答案 1 :(得分:0)

首先验证数据,然后为卡充电。在验证数据之前对卡充电没有意义。

另外,在为卡充电之前,请将数据保存到数据库中。