Perché il mio CustomValidator ASP.NET non viene convalidato?
-
20-08-2019 - |
Domanda
Devo fare qualcosa di sbagliato. Non riesco a eseguire il metodo ServerValidate del mio CustomValidator.
Ho una pagina ASP.NET di Visual Basic con un CustomValidator ...
<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="Friendly message goes here."
Display="Dynamic" />
<asp:Button ID="Button1" runat="server"
Text="Submit"
CausesValidation="True" />
Per questo test, ho impostato la convalida in modo che fallisca sempre ...
Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate args.IsValid = False End Sub
Ma quando si fa clic sul pulsante, il metodo CustomValidator1_ServerValidate () non viene mai eseguito!
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Page.Validate() If Page.IsValid Then 'it executes the code here! End If End Sub
Neanche se convalido esplicitamente quel controllo ...
CustomValidator1.Validate() 'does nothing?
Cosa sto sbagliando?
Soluzione
Aggiungi la proprietà:
ValidateEmptyText="True"
Altri suggerimenti
Stai inserendo il pulsante di invio del controllo validatore nello stesso gruppo di validazione?
In primo luogo, sembra che manchi l'attributo OnServerValidate nel markup sopra.
In secondo luogo, vorrei verificare che CustomValidator1_ServerValidate sia stato impostato come gestore eventi per l'evento ServerValidate per Textbox1. Ho avuto occasioni in cui ho cambiato il nome del metodo di convalida nel markup e code-behind, ma l'IDE non ha aggiornato automaticamente il nome del metodo di abbonamento passato al delegato del gestore dell'evento
So che è una domanda stupida (o potrebbe sembrare!). Ma hai effettivamente inserito o modificato il valore nella casella di testo? penso che il validatore non si attiverà senza cambiare il contenuto della casella di testo.