J'ai eu le même problème. Travaillé correctement localement, mais un utilisateur occasionnel de la production soumettrait en quelque sorte la page avec des données de formulaire partielles. À partir de la journalisation, j'ai pu voir que les variables HttpRequestFormVariables semblaient normales jusqu'à un certain point, puis les valeurs devenaient vides, ce qui entraînait le rejet par le site d'une exception non gérée.
ctl00 $ MainContentPlaceHolder $ foo $ rptForm $ ctl01 $ txtFormFieldId = 3815 ctl00 $ MainContentPlaceHolder $ foo $ rptForm $ ctl02 $ txtFormFieldId = 3816 ctl00 $ MainContentPlaceHolder $ foo $ rptForm $ ctl03 $ txtFormFieldId = 3817 ctl00 $ MainContentPlaceHolder $ foo $ rptForm $ ctl04 $ txtFormFieldId = 3818 $ ctl00 MainContentPlaceHolder $ foo $ rptForm $ ctl05 $ txtFormFieldId = ctl00 $ MainContentPlaceHolder $ foo $ rptForm $ ctl05 $ txtFormFieldId =
La seule façon que je suis capable de le reproduire est d'ajouter du Javascript à la e page pour le faire soumettre avant complètement chargé.
<script type="text/javascript">
$("input[id$='btnSubmit']").click();
</script>
Je pense que je vais devoir envoyer btnSubmit à partir du serveur dans l'état désactivé puis l'activer Javascript de la page après la fin du chargement.
if (btnSubmit.Enabled)
{
btnSubmit.Enabled = false;
string script = "$(document).ready(function() {$(\"input[id$='" + btnSubmit.ClientID + "']\").removeAttr('disabled');});";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "EnableSubmitButton", script, true);
}
Comment la valeur SelectedValue du dropdown est-elle définie? Si c'est fait côté serveur, la réponse du serveur à la demande initiale doit être html qui marque l'élément approprié comme sélectionné, peu importe la rapidité avec laquelle l'utilisateur fait quoi que ce soit. – jelbourn
Il est en cours d'installation côté serveur qui est la partie confuse. Je pense que c'est parce que le DOM n'est pas complètement chargé. La page est toujours en cours de téléchargement à ce stade. – Davy8