0
Arbeits

Das ist mein aspx CodeASP.NET Pflichtfeld Validator & Custom Validator nicht

<p class="input-block last"> 
    <asp:TextBox ID="uxEmployerName" runat="server" CssClass="uxemail" TabIndex="10" ValidationGroup="EmployerRegister" /> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="uxEmployerName" ErrorMessage="You must enter Company Name." EnableClientScript="false" Display="none" ValidationGroup="EmployerRegister" /> 
</p> 
<p class="input-block last"> 
    <asp:TextBox ID="uxEmail" runat="server" CssClass="uxemail" TabIndex="16" ValidationGroup="EmployerRegister" /> 
    <asp:RequiredFieldValidator ID="uxEmailValReq" runat="server" ControlToValidate="uxEmail" ErrorMessage="You must enter Email." EnableClientScript="false" Display="none" ValidationGroup="EmployerRegister" /> 
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="The 'Email Address' you have entered does not appear to be a valid address." ControlToValidate="uxEmail" EnableViewState="False" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="EmployerRegister" Display="None" /> 
</p> 
<p class="input-block last"> 
    <asp:LinkButton runat="server" ID="uxRegisterButton" Text="Submit" CausesValidation="true" ValidationGroup="EmployerRegister" CssClass="button" TabIndex="18" /> 
    <a class="button" href="#" tabindex="17">Edit package</a> 
</p> 

der einzige Validator hier arbeitet, ist RegularExpressionValidator

wenn ich Eingabe falsch E-Mail-Format dann die Fehlermeldung, es zeigt. aber nicht, wenn ich das E-Mail-Feld belasse.

Was mache ich falsch? jede Lösung

i habe auch eine benutzerdefinierte Validator mit dem E-Mail-Feld

<asp:CustomValidator ID="uxEmailValUnique" runat="server" ErrorMessage="It appears that you already have an account with us. <br/><a href='forgotten-password.aspx'>Request password</a>" 
     ControlToValidate="uxEmail" EnableViewState="False" ValidationGroup="EmployerRegister" 
     Display="None" /> 

der Server-Code-Backend für diese

ist
Private Sub uxEmailValUnique_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles uxEmailValUnique.ServerValidate 
    args.IsValid = Not LocalHelper.EmailExists(uxEmail.Text) 
End Sub 

wo in LocalHelper

Shared Function EmailExists(email As String) As Boolean 
    Return DB.GetInteger("select count(id) from [user] where deleted = 0 and active = 1 and email = @email", DB.SIP("email", email)) > 0 
End Function 

diese Datei funktioniert auch nicht

was mache ich falsch.

Antwort

1

Ich gehe davon aus, dass Sie eine Validation Kontrolle wie dieses:

<asp:ValidationSummary runat="server" ForeColor="Red" ValidationGroup="EmployerRegister" /> 

Wenn einer Ihrer Validatoren clientseitige Validierung aktiviert ist (EnableClientScript="true", der Standardwert), wird die Postbacks verhindern, wenn der Client Die Validierung schlägt fehl, sodass die serverseitige Validierung nicht durchgeführt wird. In Ihrem aktuellen Code hat der RegularExpressionValidator die clientseitige Validierung aktiviert (nicht explizit deaktiviert); Wenn dies fehlschlägt, wird die serverseitige Überprüfung für die erforderlichen Felder nicht durchgeführt und die anderen Fehlermeldungen werden nicht angezeigt.

Sie können die clientseitige Validierung für alle Ihre Validatoren deaktivieren. Die Nachricht würde bei jedem Senden des Formulars (falls zutreffend) für alle angezeigt.

<asp:RequiredFieldValidator ID="uxEmployerNameValReq" EnableClientScript="false" ... /> 
<asp:RequiredFieldValidator ID="uxEmailValReq" EnableClientScript="false" ... /> 
<asp:RegularExpressionValidator ID="uxEmailExprVal" EnableClientScript="false" ... /> 
<asp:CustomValidator ID="uxEmailValUnique" EnableClientScript="false" ... /> 

Ein weiterer sinnvoller Ansatz könnte sein, den clientseitige Validator für die grundlegendsten Anforderungen zu ermöglichen, und es für den CustomValidator abzuschalten. Die erweiterte Validierung ist nicht sinnvoll, wenn die E-Mail leer oder nicht gültig ist.

<asp:RequiredFieldValidator ID="uxEmployerNameValReq" EnableClientScript="true" ... /> 
<asp:RequiredFieldValidator ID="uxEmailValReq" EnableClientScript="true" ... /> 
<asp:RegularExpressionValidator ID="uxEmailExprVal" EnableClientScript="true" ... /> 
<asp:CustomValidator ID="uxEmailValUnique" EnableClientScript="false" ... /> 

N.B. In Ihrer Frage sagen Sie, dass die Überprüfungsmeldung nicht angezeigt wird, wenn das E-Mail-Feld leer ist. Ich habe dieses Verhalten in meinen Tests nicht mit Ihrem ursprünglichen Code gesehen.

Verwandte Themen