ASP.NET验证器永远不会验证为true

时间:2016-01-14 00:35:22

标签: asp.net validation

下面的代码一直有效,但现在不管怎么说,即使我同时提供用户名和密码,我也无法提交表单。我在后端或Chrome开发者控制台中没有出现任何错误。我尝试启用/禁用所有验证程序,并发现如果我将Enabled="false"添加到验证程序UserNameRequired,则表单会提交。但显然我希望启用这个requiredfieldvalidator。 为什么会这样?

你也可以在这里看到它(填写一个随机的电子邮件地址/密码):http://www.zorgbeurs.nl/login

    <table width="300">
    <tr>
        <td>
            <asp:Label ID="UserNameLabel" Text="Email" runat="server" AssociatedControlID="UserName"/>
        </td>    
        <td>
            <asp:TextBox ID="UserName" Text="" runat="server" Width="160px"/><br />
            <asp:RequiredFieldValidator Enabled="false" ValidationGroup="loginuser" Display="Dynamic" SetFocusOnError="True" ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="*"/>
            <asp:RegularExpressionValidator ControlToValidate="UserName" ValidationGroup="loginuser" ErrorMessage="Ongeldig emailadres" ValidationExpression="<%$resources:glossary,regexValidEmail %>" ID="revUsername" runat="server" Display="Dynamic"/>                
        </td>
    </tr>    
    <tr>
        <td valign="top">
            <asp:Label ID="PasswordLabel" Text="<%$ Resources:Glossary,Password%>" runat="server" AssociatedControlID="Password"/>
        </td>    
        <td valign="top">
            <asp:TextBox ID="Password" runat="server" TextMode="Password" Width="160px"/><br />
            <asp:RequiredFieldValidator Enabled="false" SetFocusOnError="True" Display="Dynamic" ValidationGroup="loginuser" ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="*" />                    
        </td>
    </tr>
    <tr>
        <td>

        </td>    
        <td>
            <asp:ImageButton CausesValidation="true" ValidationGroup="loginuser" ID="LoginMember" meta:resourcekey="ibtnLogin" CommandName="Login" runat="server"/>
            <asp:CheckBox TextAlign="Right" CssClass="cblist" Font-Bold="false" ID="RememberMe" runat="server" Text="<%$ Resources:Glossary,loginrememberme%>" /><br />

        </td>
    </tr>
    <tr>
        <td colspan="2">
        <asp:Label ID="FailureText" runat="server" ForeColor="Red" Font-Bold="true" EnableViewState="False"/>
        </td>
    </tr>
    </table>

更新

我还尝试直接在代码[-+.'\w]+@[-.\w]+\.[-.\w]+中添加revUsername表达式的ValidationExpression,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

我可以在您的实际网站上看到所需的验证工具,而无需进行回发。

enter image description here

关于电子邮件的正则表达式验证程序,您的表达式似乎无法正常工作。所以,我建议你改变你的正则表达式,试试这个:

<asp:RegularExpressionValidator Enabled="true" ControlToValidate="UserName" 
    ValidationGroup="loginuser" ErrorMessage="Ongeldig emailadres" 
    ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    ID="revUsername" runat="server" Display="Dynamic" />

另外,请记住再次启用,以使其在客户端和服务器端都能正常工作。

希望它可以帮到你!