2008-11-11 2 views
0

Il s'agit tout autant d'un problème de maintenance de code qu'un problème de code, mais j'ai un WebForm qui ne le vérifie plus CustomValidator. Cela a fonctionné quand j'ai touché le code il y a plus d'un an, mais cela ne fonctionne plus maintenant que l'utilisateur a demandé quelques changements ...Que suspectez-vous lorsque ASP.NET ignore un CustomValidator?

Le WebForm contient une liste déroulante avec un "- Tous -" par défaut. item avec String.Empty comme valeur. Lorsque l'utilisateur clique sur le bouton Envoyer, le validateur doit vérifier que la valeur du menu déroulant n'est pas String.Empty. J'ai défini des points de rupture dans le code de validation du client et le code de validation du serveur, mais ni le feu.

Où commenceriez-vous à chercher? Quels sont les suspects habituels? J'ai, bien sûr, comparé ma copie de travail à ce qui est dans le contrôle de source, mais rien ne saute comme étant suspect.

Juste au cas où il importe, 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> 

Répondre

5

je remarque quelques questions

  • Je ne pense pas que vous avez besoin d'une CausesValidation = true si AutoPostBack est définie sur false
  • Vous n'utilisez des groupes de validation, de sorte que ne peut pas être la cause
  • Pourquoi ne pas utiliser un RequiredFieldValidator?
  • Si vous voulez tirer sur la validation des champs vides, définissez la propriété ValidateEmptyText true
+0

ValidateEmptyText fait l'affaire, mais je me demande pourquoi ce n'était pas un problème l'année dernière. Le comportement de ValidateEmptyText a-t-il changé? Sinon, ma valeur par défaut doit avoir changé. – flipdoubt

+0

Merci beaucoup, le ValidateEmptyText causait aussi mon problème. – JoshBaltzell

+0

Merci, la propriété ValidateEmptyText m'a également causé le problème. –

0

Quelques étapes de dépannage:

  • Est-ce le seul validateur sur la forme?
  • La validation est-elle activée sur la page?
  • La validation est-elle activée pour le contrôle ciblé?
  • Le validateur est-il activé?
0

Je prendrais un coup d'oeil sérieux au ValidationGroup.

Si quelque chose a été omis du groupe, il ne sera plus validé. Sinon, assurez-vous que vous n'avez pas d'erreur javascript (côté client) et que la méthode "OnServerValidate" a un point d'arrêt à l'intérieur.

0

Le validateur se trouve-t-il dans le même groupe de validateurs que le bouton de soumission?

1

Un CustomValidator ne se déclenche pas si le contrôle, il est a une valeur valider vide, donc un CustomValidator doit toujours être accompagnée RequiredFieldValidator

Questions connexes