Asp: RadioButtonList poste-t-il toujours sur le serveur même lorsque la validation du client échoue?
-
06-07-2019 - |
Question
Cette requête est liée à celle que j'ai demandée. hier. J'ai une liste de boutons radio sur ma page asp.net définie comme suit:
<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" >
<asp:ListItem Selected="True">Name</asp:ListItem>
<asp:ListItem>Staff No</asp:ListItem>
</asp:RadioButtonList>
Du côté client, je fais les validations suivantes:
rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"
Le problème est que la validation Javascript s'exécute comme prévu. Un message s'affiche et je compte rester sur la page jusqu'à ce que l'utilisateur ait enregistré les modifications. La page est à nouveau affichée et, effectivement, je perds les modifications non enregistrées.
Qu'est-ce qui pourrait mal se passer?
La solution
J'ai résolu ce problème, le problème était que je fixais le "onclick". de RadioButtonList à la place sur les boutons radio individuels.
Voici le correctif:
rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
Autres conseils
Le code OnClick
que vous utilisez pour "valider". est exécuté, puis le code qui renvoie le formulaire que le contrôle injecte lui-même est exécuté.
Vous devez intercepter ce processus PostBack et l'arrêter avant qu'il ne poste le formulaire côté client. La meilleure façon de procéder consiste à utiliser un CustomValidator
et plus particulièrement le paramètre "ClientValidationFunction". propriété. Cela permettra à votre code JavaScript de signaler que la publication ne devrait pas avoir lieu en raison d’une erreur de validation.