【问题标题】:ASP.NET validator never validates as trueASP.NET 验证器永远不会验证为真
【发布时间】:2023-03-26 01:10:01
【问题描述】:

下面的代码一直有效,但现在不知何故,即使我提供了用户名和密码,我也无法再提交表单了。我在后端或 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,但这并没有帮助。

【问题讨论】:

  • 您正在从资源文件中获取“revUsername”验证器的表达式。它在资源文件中是否发生了变化?您是否尝试过将表达式直接包含在代码中?
  • @HernanGuzman:谢谢,我试过了(在帖子中更新)但它没有帮助......还有其他建议吗?
  • 用户名是电子邮件吗? @Flo
  • @HernanGuzman:是的

标签: asp.net validation


【解决方案1】:

我可以看到所需的验证器在您的实时站点中工作,而无需进行回发。

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

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

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

希望对你有帮助!

【讨论】:

  • 谢谢。确实它们可能有效,但除非我禁用 revUername 验证器,否则永远不会进行回发。我试过你的表达方式,回发还是不行……
  • @Flo 我无法在本地重现它 :( ...我用您的代码创建了一个 webforms 项目,唯一发现工作不正确的是表达式。因此,我认为这是您的问题.
  • @Flo 你试过 Enabled="true" 和 EnableClientScript="false" 吗?它的行为如何?
  • 好吧,我犯了一个错误,我将 requiredfieldvalidator 上的 Enabled 属性设置为 false 而不是正则表达式validator(我现在在我的帖子中更新了这个)。使用您的最新建议,当我点击提交时(似乎确实发生了回发),密码字段被简单地清除,但没有显示登录错误(例如username/password incorrect)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2011-09-11
  • 1970-01-01
相关资源
最近更新 更多