Domanda

Ho il seguente codice. Quando premo il mio pulsante di salvataggio, tre campi di convalida richiesti funzionano correttamente e funzionano correttamente. Tuttavia il mio validatore personalizzato non funziona. Non attiva affatto l'evento. Ho caselle di testo standard e un controllo riassuntivo delle convalide. C'è qualche motivo per cui potrebbe non funzionare?

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." />

<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber" 
        ErrorMessage="Must enter at least one phone number." Display="None" 
        ValidateEmptyText="True" />

<script runat="server">
    void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e)
    {
        if (txtMobileNumber.Text.Equals("") &&
            txtWorkNumber.Text.Equals("") &&
            txtHomeNumber.Text.Equals(""))
        {
            e.IsValid = false;
        }
    }
</script>
È stato utile?

Soluzione

L'ho risolto.

Il controllo del validatore personalizzato è un controllo sul lato server, quindi gli altri validatori (che sono lato client) vengono eseguiti per primi. Questo è un po 'fuorviante poiché il controllo validationsummary di solito mostra tutti gli errori del validatore.

Supponendo che il nome, l'e-mail, ecc. fossero validi, solo allora si sarebbe inviato al server e avrebbe generato l'errore di convalida.

Altri suggerimenti

Esatto. Funziona così. Se si desidera che un validatore personalizzato funzioni anche nel browser, è necessario implementare la convalida personalizzata in JavaScript e definire il metodo nella proprietà ClientValidationFunction del controllo. Quindi verrà visualizzato con gli errori sul lato client nel riepilogo della convalida.

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