2012-07-24 1 views
5

Je travaille sur un projet ASP.NET 4.0 Web Forms, après une pause d'environ 5 ans, et je suis confus au sujet du comportement de soumission.ASP.NET Web Forms empêche-t-il une soumission par double clic?

Dans l'événement de clic d'un bouton, je dors le fil de sorte que je puisse cliquer sur le bouton soumettre plusieurs fois. D'après ce que je peux dire, ASP.NET empêche l'événement click d'être appelé plusieurs fois. Est-ce vrai?

BTW: J'ai désactivé le javascript pour ce test.

+0

double possible de [ASP.Net problème double-cliquez] (http://stackoverflow.com/questions/1498269/asp-net- double-cliquez sur le problème) & [Empêcher un double-clic sur le bouton] (http://stackoverflow.com/questions/6408710/prevent-double-clicking-on-button) et http://stackoverflow.com/questions/11342546/comment-éviter-double-soumettre-avec-jquery-dans-asp-net-app-avec-updatepanels? rq = 1 – adatapost

+0

Le pro Blem avec ces réponses est qu'ils parlent de la mise en œuvre d'un jeton pour déterminer si une double soumission a eu lieu. C'est ce que j'étais sur le point de faire jusqu'à ce que ASP.NET l'empêche de toute façon. Il y a juste une réponse, http://stackoverflow.com/a/1502846/120399, qui indique qu'ASP.NET peut prendre soin d'elle pour vous. – Jules

Répondre

8

« ASP.NET empêche l'événement click appelé plus d'une fois. Est-ce vrai? »

Pas, en fait ce qui vous arrive est que vos événements sont bloqués par le verrou de la séance. (What session is on asp.net, est un module sur asp.net qui peut conserver des données pour chaque utilisateur visitant le site)

Donc, quand vous faites un submit, et que la page est en cours d'exécution submit, alors vous en faites une seconde avant le Le premier rejoue, en fait le second attend le premier pour finir et débloquer la session.

Pour effectuer un test et prouver que la session bloque votre demande, désactivez la session et réessayez votre test.

relative:
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

J'ai effectué le test et les résultats sont tels que vous le dites: lorsque la session est désactivée, j'obtiens plusieurs appels à l'événement. Lorsque la session est activée, il semble que les demandes suivantes soient rejetées et non mises en file d'attente si l'événement est bloqué. A partir de là, je suppose que si Session est activée pour une page, je n'ai pas à m'inquiéter des doubles soumissions - tant que je dis, par exemple, désactiver le bouton avant de répondre. Est-ce correct? – Jules

+0

@Jules Bon, je suis heureux que je comprends le vrai problème :) – Aristos

+0

@Jules Oui, la session est l'aide pour de nombreux problèmes de synchronisation comme celui-là. J'ai fait une session personnalisée qui ne verrouille rien et je me verrouille par mon problème de gauche comme celui-ci. C'est la bonne partie, la mauvaise partie est que toutes les demandes verrouillées et cette demande qui n'ont pas de relativité à bloquer l'un l'autre ... au moins rendre la vie plus facile au cours des premiers mois lorsque vous démarrez un site. – Aristos