【问题标题】:RegularExpression Validator doesn't display error message正则表达式验证器不显示错误消息
【发布时间】:2010-03-17 22:17:36
【问题描述】:

我有一个正则表达式验证控件已初始化以验证文本框控件。我希望用户能够输入美国货币值(12,115.85 美元或 1500.22 美元等)。我在 regexlib 网站上找到了一个可以解决问题的正则表达式。除了一件关键的事情外,验证控件似乎正在工作。如果输入无效数据,验证文本显示(文本框旁边的红色“*”),但页面仍会提交并且不会弹出错误消息......我认为应该显示错误消息如果验证控件检测到无效数据,页面将不会提交。这不是 ASP .NET 自动实现的吗?我已经广泛搜索了如何创建验证控件,但没有发现任何与我已经在做的不同的事情。谁能告诉我我在这里做错了什么?

<asp:TextBox ID="txtActualCost" runat="server" Width="120px" CausesValidation="true" />
<asp:RegularExpressionValidator ID="regExValActualCost"
    ControlToValidate="txtActualCost"
    Text="*"
    ValidationExpression="^\$?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$"
    ErrorMessage="Please enter a valid currency value for 'Actual Cost'"
    Display="Dynamic"
    EnableClientScript="true"
    runat="server" />

【问题讨论】:

    标签: asp.net .net validation


    【解决方案1】:

    是的,在客户端,验证应该是自动的。您需要检查一些事项。

    页面上是否还有其他一些 javascript 出错并导致验证脚本失败?

    您是否使用验证组?如果是这样,请确保提交按钮包含在此验证组中。

    您的提交按钮是否将属性“CausesValidation”设置为 false?

    您确定您的验证表达式是正确的吗?尝试下载 Expresso 之类的工具,以确保您的表达式在不同输入下的行为符合您的预期。

    检查的另一点是,正则表达式验证器不会在空字符串上触发。您是否使用空输入进行测试并期望表达式失败?如果是这样,那么请尝试提供一个额外的 requiredfieldvalidator 来捕获这个额外的失败条件。

    最后,您可以自己调用客户端页面验证来检查发生了什么。尝试在页面上放置一个带有 OnClientClick 属性的临时按钮,例如:

    <input  type="button" value="Fire Validation" name="foo" onClick="Page_ClientValidate();alert('Valid: '+Page_IsValid);return false;" />
    

    这将在客户端触发验证检查并提供带有验证结果的警报。

    【讨论】:

    • 谢谢。这里有很多好的建议供我研究:-)
    【解决方案2】:

    它应该可以正常启动。执行以下操作:

    1. 删除 TextBox 上不需要的 CauseValidation="true",并确保未在 Button 中设置此属性。
    2. 确认您的按钮未附加到验证组,如果是,则验证器必须设置为同一组。
    3. 如果您想要弹出窗口,您需要添加ValidationSummary 并将其设置为显示弹出窗口。 ValidationSummary 控件使用存储在验证器的 ErrorMessage 属性中的值。
    4. 还要确保在您的按钮处理程序中执行 if (Page.IsValid),以便在禁用 javascript 的情况下进行服务器端检查。

    除此之外,它应该按您的预期工作。

    【讨论】:

    • 谢谢,看来我需要添加验证摘要!
    【解决方案3】:

    在您的 Submit_Click(或其他)中,您需要检查 Page.IsValid。 ASP.NET 不会自动假定您在页面上有验证器。您可能必须先调用 Page.Validate()。

    【讨论】:

    • 谢谢。我添加了对 Page.IsValid 的检查并按我想要的方式运行
    猜你喜欢
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多