Форма asp.net представлена дважды
У меня есть веб-страница с формой и кнопкой отправки, а на стороне сервера я использовал значение сеанса, чтобы дважды запретить отправку формы, как если бы начальное значение сеанса равнялось 0, а после нажатия кнопки "Отправить" - 1. Кнопка, каждый раз кнопка подтверждения будет проверять значение сеанса в первую очередь.
Но когда наш проект был опубликован, я обнаружил, что для одного и того же человека было две записи (это означает, что они отправляют дважды, я полагаю, и это случалось не очень часто, возможно, для одного или двух человек), и временной интервал между этими двумя записями очень маленький, примерно 0,3 секунды, поэтому сначала я подумал, что они могут дважды щелкнуть по кнопке отправки, но после того, как я попробовал на своем компьютере, он все равно вставил только одну запись в базу данных.
Я запутался, как это происходит и как это предотвратить?
Вот код:
protected void Page_Init(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["IsBackForwordPayment"] = 0;
}
}
protected void submit_Click(object sender, EventArgs e)
{
if (Session["IsBackForwordPayment"] != null && Session["IsBackForwordPayment"].ToString() != "0")
Response.Redirect("~/pages/renewal/duplicaterenewal.aspx");
.......
}
Возможно ли это потому, что после проверки значения сеанса программа просто перенаправляет на другую страницу, но не завершает процесс отправки??
2 ответа
Пытаться
Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true);
Это остановит выполнение на текущей странице.
Очевидно, Response.End() НЕ остановит выполнение кода (что он и делает). Я обнаружил это здесь:
Response.Redirect не окончание выполнения
Вам нужно будет добавить return
заявление, чтобы закончить выполнение после того, как вы Response.Redirect()
,