跨重复表单提交尝试持久化信息
本文关键字:持久化 信息 表单提交 | 更新日期: 2023-09-27 18:16:28
下面是我正在制作的一个简化版注册页面。
当用户点击按钮时,我需要从信用卡中取款。然后,如果事务成功,创建新的用户帐户。
我的问题是处理信用卡事务成功但随后创建用户事务失败的场景。如果用户需要更正表格中的某些信息,我不想再从他们的卡上扣钱了。
我的PaymentStatus
变量包含1
或0
,具体取决于事务是否成功。
这会在多个按钮点击中持续存在吗?如果是这样,在用户需要更正表单中的某些数据的情况下,这是避免重复事务的可靠方法吗?
我可以将信息持久化到数据库中,但是我更倾向于在事务的后面,当存在一个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;
}
}
}
先验证数据,然后刷卡。在验证数据之前给卡充值是没有意义的。
先验证数据,然后刷卡。在验证数据之前就刷卡是没有意义的。
同时,在刷卡前将数据保存到数据库