2012-12-19 16 views
5

Ho una CustomValidator e ho definito ogni possibile parametro di esso:messaggio CustomValidator doesnt show up

<asp:CustomValidator ID="custom" runat="server" Text="*" ErrorMessage="This email address is already registered" ControlToValidate="txtEmail" OnServerValidate="isExist" Display="None" ValidationGroup="valRegister"></asp:CustomValidator> 

PS: ho un RequiredFieldValidator per lo stesso testo e io non voler controllare valore vuoto.

Ecco altri oggetti di forma:

<div class="row"><asp:Label runat="server" Text="Email" AssociatedControlID="txtEmail"></asp:Label><asp:RequiredFieldValidator runat="server" ErrorMessage="Please enter your email" Text="*" ControlToValidate="txtEmail"></asp:RequiredFieldValidator><asp:TextBox ID="txtEmail" runat="server" CssClass="inpBox"></asp:TextBox></div> 

<asp:Button runat="server" Text="Register" CssClass="btn" OnClick="register_member" CausesValidation="true" ValidationGroup="valRegister" /> 

<asp:ValidationSummary ID="validationSummary" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="valRegister" /> 

protected void isExist(object sender, ServerValidateEventArgs args){ 
if (cre.member.isExist(args.Value)){ 
    args.IsValid = false; 
} else { 
    args.IsValid = true; 
} 

}

Quando ho messo una e-mail già presente nella tabella db * figura sul foglio, ma l'errore messaggio non si presenta. Ho provato tutte le opzioni di visualizzazione per errore personalizzato ma senza fortuna.

risposta

4

Ho preso il codice esattamente come nella tua domanda.

La modifica di Display="None" a Display="Dynamic" nello asp:CustomValidator fa apparire l'asterisco.

La modifica di ShowSummary="false" a ShowSummary="true" nello asp:ValidationSummary causa la visualizzazione del messaggio di errore nel riepilogo.

+0

Ho realizzato qualcosa con la tua risposta, OnServerValidate funziona solo se ValidationSummary> ShowSummary è "true". ShowMessageBox funziona sul lato client e per questo OnServerValidate non funziona. Ho risolto il problema aggiungendo una chiamata Ajax a una pagina aspx per controllare l'indirizzo email inserito e quindi ho utilizzato ClientValidationFunction per chiamare la funzione js. – dvdmn

+0

Aha! Scusa, non avevo realizzato che si trattava dell'errore di convalida della messagebox che cercavi. Sì, se si desidera che la casella messaggi sul lato client richieda il coinvolgimento del server (ad esempio per verificare la presenza di un indirizzo di posta elettronica in un database), sarà necessario fare qualcosa di simile. – Carson63000

1

Modifica della Display-"Dynamic" o qualsiasi cosa in realtà non fa nulla se il server non gestisce la convalida manualmente, soprattutto quando si utilizza <asp:CustomValidator. Anche un ValidationGroup con o senza un ValidationSummary non fa nulla.

Forza sempre una convalida sul server prima del consentendo all'utente di uscire dal modulo/gridview/etc.

cioè

  ...your form here... 
      <tr> 
       <td colspan="3" style="text-align: center" valign="top"> 
        <asp:Button ID="ButtonSubmit" runat="server" Text="Submit" OnClick="Submit_Click" CausesValidation="true" /> 
        <asp:Button ID="ButtonCancel" runat="server" Text="Cancel" OnClick="Cancel_Click" CausesValidation="false" /> 
       </td> 
      </tr> 
     </table> 
    </asp:Panel> 

... 
    protected void Submit_Click(object sender, EventArgs e) 
    { 
     Page.Validate(); 
     if (Page.IsValid) 
     { 
      //processing done after a successful submit here! 
     } 
    } 

Il Page.Validate() forzerà la convalida controlli per controllare e visualizzare il messaggio di errore.

Problemi correlati