Domanda

Questo è tanto un problema di manutenzione del codice quanto un problema di codice, ma ho un WebForm che non lo controlla più CustomValidator. Ha funzionato l'ultima volta che ho toccato il codice più di un anno fa, ma non funziona più ora che l'utente ha richiesto alcune modifiche ...

WebForm contiene un menu a discesa associato a dati con un valore predefinito " - Tutti - " elemento con String.Empty come valore. Quando l'utente fa clic sul pulsante di invio, il validatore deve verificare che il valore dell'elenco a discesa non sia String.Empty. Ho impostato dei punti di interruzione nel codice di convalida del client e nel codice di convalida del server, ma nessuno dei due è attivo.

Dove inizieresti a cercare? Quali sono i soliti sospetti? Naturalmente, ho confrontato la mia copia di lavoro con ciò che è nel controllo del codice sorgente, ma nulla risulta sospetto.

Per ogni evenienza, ecco il mio codice:

<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>
È stato utile?

Soluzione

Ho notato un paio di problemi

  • Non credo che sia necessario un CauseValidation = true se AutoPostBack è impostato su false
  • Non usi gruppi di validazione, quindi questa non può essere la causa
  • Perché non utilizzare un RequiredFieldValidator?
  • Se si desidera attivare la convalida su campi vuoti, impostare la proprietà ValidateEmptyText su true

Altri suggerimenti

Un CustomValidator non si attiva se il controllo che sta convalidando ha un valore vuoto, quindi un CustomValidator deve essere sempre accompagnato da RequiredFieldValidator

Alcuni passaggi per la risoluzione dei problemi:

  • È questo l'unico validatore nel modulo?
  • La convalida è abilitata sulla pagina?
  • La convalida è abilitata per il controllo mirato?
  • Il validatore stesso è abilitato?

Darei un'occhiata seria al Gruppo di validazione.

Se qualcosa è stato lasciato fuori dal gruppo, non verrà più validato. Altrimenti, assicurati di non avere alcun errore javascript (per il lato client) e che il metodo che è "quotServerValidate" ha un punto di interruzione all'interno.

Il validatore fa parte dello stesso gruppo di validatori del pulsante di invio?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top