2012-12-19 20 views
5

Ich habe eine CustomValidator zeigen tut und ich definiert alle möglichen Parameter davon:CustomValidator Nachricht

<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: Ich habe eine RequiredFieldValidator für gleiche Textbox haben, und ich möchte nicht leeren Wert überprüfen.

Hier sind weitere Aufgaben der Form:

<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; 
} 

}

Wenn ich eine E-Mail setzen existieren bereits in der Tabelle db * erscheint in der Form, aber der Fehler Nachricht wird nicht angezeigt. Ich habe alle Anzeigeoptionen für benutzerdefinierte Fehler versucht, aber kein Glück.

Antwort

4

Ich nahm den Code genau wie in Ihrer Frage.

Durch Ändern von Display="None" zu Display="Dynamic" in asp:CustomValidator wird der Stern angezeigt.

Die Änderung ShowSummary="false" zu ShowSummary="true" in asp:ValidationSummary führt dazu, dass die Fehlermeldung in der Zusammenfassung erscheint.

+0

Ich erkannte etwas mit Ihrer Antwort, OnServerValidate funktioniert nur, wenn ValidationSummary> ShowSummary "True" ist. ShowMessageBox funktioniert auf der Client-Seite und deshalb funktioniert OnServerValidate nicht. Ich löste mein Problem, indem ich einen Ajax Anruf zu einer aspx Seite hinzufügte, um eingegebene email Adresse zu überprüfen und dann benutzte ich ClientValidationFunction, um diese js Funktion anzurufen. – dvdmn

+0

Aha! Entschuldigung, ich habe nicht bemerkt, dass es sich um den Fehler bei der Nachrichtenbox-Validierung handelt, nach dem Sie gesucht haben. Ja, wenn Sie die clientseitige Messagebox haben möchten, aber die Einbindung des Servers erfordern (z. B. um nach einer E-Mail-Adresse in einer Datenbank zu suchen), müssen Sie etwas Ähnliches tun. – Carson63000

1

Ändern der Display-"Dynamic" oder irgendetwas nicht wirklich etwas zu tun hat, wenn der Server manuell die Validierung nicht ist der Umgang, vor allem, wenn <asp:CustomValidator verwendet. Selbst ein ValidationGroup mit oder ohne ValidationSummary tut nichts.

Erzwingen Sie immer eine Überprüfung auf dem Server vor, so dass der Benutzer das Formular/gridview/etc verlassen kann.

dh

  ...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! 
     } 
    } 

Die Page.Validate() die Validierung zwingen wird, steuert zu überprüfen und Ihre Fehlermeldung angezeigt.

Verwandte Themen