【问题标题】:ASP.NET WebForms - Execute JavaScript validation and Validation Control at the same timeASP.NET WebForms - 同时执行 JavaScript 验证和验证控制
【发布时间】:2016-08-04 12:47:12
【问题描述】:

在我正在开发的应用程序中,我使用了 ASP.NET Web 窗体提供的验证控件,并且对于表单的某些部分,我使用了 JavaScript。

验证的两个方面都可以正常工作,但是,当我单击“提交”按钮时,首先出现的是 ASP.NET 验证,然后是我在 JavaScript 中进行的自定义验证。结果,当表单不完整并提交时,仅显示 ASP.NET 验证错误,而当这些错误被更正并提交表单时,则显示我的验证错误。

我想要的是当用户单击提交按钮时,ASP.NET 验证和我的 JavaScript 验证同时发生,以便用户可以一次看到所有错误。

<form id="StudentLSFApplication" runat="server" onsubmit="return validateForm()">
    <!--other html code-->
    <asp:Button ID="SaveLSFApplication" runat="server" Text="Save Application" OnClick="saveApplication"
            ValidationGroup="AllValidation" />
</form>

<script>
    function validateForm() {
        //my validation
    }
</script>

从我的示例代码中可以看出,我在 onsubmit 事件中调用了 JavaScript 函数 validateForm(),并且 Button 控件是 AllValidation 验证组的一部分。目前,在提交表单时首先出现AllValidation,如果没问题,则出现validateForm()

【问题讨论】:

    标签: javascript asp.net webforms


    【解决方案1】:

    我认为您正在寻找的是 CustomValidator。你可以这样使用它:

        <script type="text/javascript">
            function validateFormElement(sender, args) {
                if (args.Value == "waarde") {
                    args.IsValid = true;
                } else {
                    args.IsValid = false;
                }
            }
        </script>
    
        <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="myValidation"></asp:TextBox>
    
        <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Input error" ValidationGroup="myValidation" ClientValidationFunction="validateFormElement" ControlToValidate="TextBox1"></asp:CustomValidator>
    
        <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="myValidation" />
    

    您仍然可以使用所有其他验证器。无需将您想要的每个验证都塞进那个 javascript 函数中。

    【讨论】:

    • 建议使用 Microsoft 提供的其他验证器,或者更复杂地使用 CustomValidator 用于每种验证/控制。 ASP.NET 验证器非常棒,因为它们使用 JavaScript 和 C#(代码隐藏) 进行验证。 JavaScript 可以被绕过,因此您应该在 CustomValidator 上添加一个事件后代码,并不仅在 JavaScript 上编写验证,甚至在 C# 上编写验证。 CustomValidator 应该只指向一个控件,但它可以在其他验证器之间共享相同的功能。应该设置ControlToValidate
    • 上面的例子是针对表单中的单个控件,而不是一个函数中的完整验证。稍微编辑了答案以使其更清楚。但是,如果您想对多个控件进行更复杂的客户端验证,例如“如果选中 CheckBox1,则 TextBox1 必须包含数据”,那么您可以省略 ControlToValidate 以确保触发 CustomValidator。并且仍然总是像 modiX 建议的那样在后面的代码中进行验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多