Question

C’est autant un problème de maintenance de code qu’un problème de code, mais j’ai un formulaire Web qui ne le vérifie plus CustomValidator. Cela fonctionnait lorsque j'ai touché le code pour la dernière fois il y a un an, mais cela ne fonctionne plus maintenant que l'utilisateur a demandé des modifications ...

Le formulaire Web contient un menu déroulant lié aux données avec une valeur par défaut " - Tous - " item avec String.Empty comme valeur. Lorsque l'utilisateur clique sur le bouton d'envoi, le validateur doit vérifier que la valeur de la liste déroulante n'est pas String.Empty. J'ai défini des points d'arrêt dans le code de validation du client et dans le code de validation du serveur, mais aucun ne s'est déclenché.

Où voudriez-vous commencer à chercher? Quels sont les suspects habituels? Bien sûr, j’ai comparé ma copie de travail à ce qui se trouve dans le contrôle de source, mais rien n’est suspect.

Au cas où cela serait important, voici mon code:

<asp:DropDownList ID="_AssessmentDropDown" runat="server" DataSourceID="_AssessmentsData" CausesValidation="true" AutoPostBack="false"
    DataTextField="AssessmentName" DataValueField="AssessmentName" OnDataBound="_HandleAssessmentsBound">
</asp:DropDownList>
<asp:CustomValidator ID="_AssessmentValidator" runat="server" ClientValidationFunction="_HandleValidateAssessment_Client"
    ControlToValidate="_AssessmentDropDown" ErrorMessage="* You must select an Assessment."
    OnServerValidate="_HandleValidateAssessment" />
<asp:ObjectDataSource ID="_AssessmentsData" runat="server"
    OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
    TypeName="DataTableAdapters.GET_GRADE_ASSESSMENTSTableAdapter">
    <SelectParameters>
      <asp:ControlParameter Name="GRADECODE" ControlID="_GradeCodeDropDown" PropertyName="SelectedValue" />
    </SelectParameters>
</asp:ObjectDataSource>
Était-ce utile?

La solution

Je remarque quelques problèmes

  • Je ne pense pas que vous ayez besoin de CausesValidation = true si AutoPostBack est défini sur false
  • Vous n'utilisez pas de groupes de validation, ce qui ne peut en être la cause
  • Pourquoi ne pas utiliser un RequiredFieldValidator?
  • Si vous souhaitez déclencher la validation sur des champs vides, définissez la propriété ValidateEmptyText sur true

Autres conseils

Un CustomValidator ne se déclenche pas si le contrôle qu'il valide a une valeur vide. Un CustomValidator doit toujours être accompagné de RequiredFieldValidator

Quelques étapes de dépannage:

  • Est-ce le seul validateur sur le formulaire?
  • La validation est-elle activée sur la page?
  • La validation est-elle activée pour le contrôle ciblé?
  • Le validateur lui-même est-il activé?

Je prendrais au sérieux le groupe de validation.

Si quelque chose a été laissé en dehors du groupe, il ne sera plus validé. Sinon, assurez-vous de ne pas avoir d'erreur javascript (pour le côté client) et que la méthode "OnServerValidate" est la suivante: a un point de rupture à l'intérieur.

Le validateur appartient-il au même groupe de validateurs que le bouton d'envoi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top