跨重复表单提交尝试持久化信息

本文关键字:持久化 信息 表单提交 | 更新日期: 2023-09-27 18:16:28

下面是我正在制作的一个简化版注册页面。

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

我的问题是处理信用卡事务成功但随后创建用户事务失败的场景。如果用户需要更正表格中的某些信息,我不想再从他们的卡上扣钱了。
我的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;
        }
    }
}

跨重复表单提交尝试持久化信息

先验证数据,然后刷卡。在验证数据之前给卡充值是没有意义的。

先验证数据,然后刷卡。在验证数据之前就刷卡是没有意义的。

同时,在刷卡前将数据保存到数据库