2012-07-24 16 views
5

Pracuję nad projektem ASP.NET 4.0 Web Forms, po przerwie trwającej około 5 lat i jestem zdezorientowany co do sposobu przesyłania.Czy formularze sieci Web ASP.NET uniemożliwiają dwukrotne kliknięcie?

Po kliknięciu przycisku przycisku przesypiam wątek, dzięki czemu mogę wielokrotnie klikać przycisk przesyłania.

Z tego co wiem, program ASP.NET uniemożliwia wywołanie zdarzenia kliknięcia więcej niż jeden raz. Czy to prawda?

BTW: Wyłączyłem javascript dla tego testu.

+0

możliwe duplikat [ASP.Net dwukrotnie kliknąć problemu] (http://stackoverflow.com/questions/1498269/asp-net- problem z dwukrotnym kliknięciem) i [Zapobieganie dwukrotnemu kliknięciu przycisku] (http://stackoverflow.com/questions/6408710/prevent-double-clicking-on-button) i http://stackoverflow.com/questions/11342546/how-to-prevent-double-submit-with-jquery-in-asp-net-app-with-updatepanels? rq = 1 – adatapost

+0

The pro blem z tymi odpowiedziami jest to, że mówią o wprowadzeniu tokena w celu ustalenia, czy miało miejsce podwójne zgłoszenie. Właśnie to miałem zrobić, dopóki nie wyglądało na to, że ASP.NET i tak go zapobiegał. Jest tylko jedna odpowiedź, http://stackoverflow.com/a/1502846/120399, która wskazuje, że ASP.NET może zająć się nią dla ciebie. – Jules

Odpowiedz

8

ASP.NET jest zapobieganie zdarzenie click miano więcej niż jeden raz. Czy to prawda?

nr, właściwie co się z tobą dzieje jest to, że zdarzenia są blokowane przez zamka sesji. (What session is on asp.net, jest modułem na asp.net, który może przechowywać dane dla każdego użytkownika, który odwiedza witrynę)

Kiedy więc przesyłasz, a strona jest uruchomiona, przesyłaj, a następnie wykonaj drugą przed pierwsze powtórzenie, w rzeczywistości drugie czeka na pierwsze, aby zakończyć i odblokować sesję.

Aby wykonać test i udowodnić, że sesja blokuje Twoje żądanie, wyłącz sesję i spróbuj ponownie.

względna
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely
Trying to make Web Method Asynchronous

+1

Wykonałem test, a wyniki są takie, jak mówisz - po wyłączeniu sesji otrzymuję wiele trafień. Gdy sesja jest włączona, wygląda na to, że kolejne żądania są odrzucane i nie są umieszczane w kolejce, jeśli wydarzenie jest zablokowane. Z tego wynika, że ​​jeśli mam włączoną Sesję dla strony, nie muszę się martwić o podwójne przesyłanie - tak długo, jak ja, na przykład, wyłączam przycisk przed odpowiedzią. Czy to jest poprawne? – Jules

+0

@Jules Dobrze, cieszę się, że rozumiem prawdziwy problem :) – Aristos

+0

@Jules Tak, sesja jest pomocna dla wielu problemów z synchronizacją, takich jak ta. Zrobiłem sesję niestandardową, która niczego nie blokuje, i blokuję lewy numer, taki jak ten. To jest dobra część, zła część polega na tym, że blokujemy wszystkie żądania, a to sprawia, że ​​prośba, która nie ma względności, blokuje drugą ... przynajmniej ułatwiają życie w pierwszych miesiącach, kiedy uruchamiasz stronę. – Aristos

Powiązane problemy