2012-03-09 3 views
4

В настоящее время я ищу способ предотвратить появление нескольких форм в ASP.NET (то есть пользователь несколько раз нажимает кнопку submitbutt, что вызывает событие OnClick-Event несколько раз) ,Предотвращение отправки нескольких форм в ASP.NET

В настоящее время я делаю это так:

protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     Page.ClientScript.RegisterOnSubmitStatement(GetType(), "ServerForm", 
     "if (this.submitted) return false; this.submitted = true; return true;"); 
    } 

Это работает как шарм для синхронных постбэк - «submitted' значение будет сброшена после каждого постбэк и предотвратить форму от их представлений мультипликатора раз в том же запуске - однако этот метод не работает для AsyncPostbacks, то есть с UpdatePanel, поэтому теперь я ищу идею, чтобы это произошло без необходимости отключать каждую кнопку через JS после нажатия кнопки ,

Спасибо,

Dennis

+3

Почему бы не отключить кнопку? –

+0

Потому что это очень много JS, что я действительно не хочу на своих страницах, кроме того, он должен работать для нескольких браузеров (hi IE), что действительно может быть болью для реализации, я надеялся найти простое решение такого как это, что я могу просто реализовать в классе, происходящем от страницы. –

ответ

1

почему вы не проверить в базе данных? если пользователь уже зарегистрировался, дайте поле предупреждения. и вы также можете проверить PRG pattern

Handling Form submission with PRG

0
+2

Добро пожаловать в переполнение стека! Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/q/8259) включить основные части ответа здесь и предоставить ссылку для справки. –

0
  1. Вы можете проверить конечные методы запуска & присутствующие в классе Sys.WebForms.PageRequestManager для проверки ASync запросов.
  2. Sys.WebForms.PageRequestManager Вы можете изменить код в приведенном выше примере & отключить кнопку с помощью простой JavaScript, как

    document.getElementById("YouButton.ClientID").disabled = true;

Смежные вопросы