代码之家  ›  专栏  ›  技术社区  ›  Remi Despres-Smyth

如何获得ASP.NET的客户端验证。NET页面要运行吗?

  •  3
  • Remi Despres-Smyth  · 技术社区  · 17 年前

    <%@ Page Language="C#" AutoEventWireup="true" 
        CodeFile="aTET3.aspx.cs" Inherits="aTET3" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>TEST</title>
    
        <script type="text/javascript">
        //<![CDATA[
        function TEST() 
        {
            alert("INSIDE TEST");
            alert("ValidatorCommonOnSubmit()=" + ValidatorCommonOnSubmit());
            alert("Page_ClientValidate()=" + Page_ClientValidate());
        }
        //]]>
        </script>
    </head>
    
    <body link="#1A548E" vlink="#1A548E" alink="#1A548E" onunload="TEST()">
    
    <form name="appForm" method="post" action="aTET3.aspx" id="appForm" runat="server">
    <asp:ValidationSummary id="appValidationSummary" 
        ValidationGroup="appValidation" 
        DisplayMode="List"
        EnableClientScript="true"
        HeaderText="Loan application not ready"
        runat="server"
        Enabled="true"
        Visible="true" 
        ShowSummary="true" />
    <asp:Label ID="lblMessage" Font-Bold="true" ForeColor="Red" runat="server" />
    
    <br />
    Enter amount:
    
    <asp:RequiredFieldValidator ID="ApplicationAmountValidator" 
        ValidationGroup="appValidation" 
        ControlToValidate="txtApplicationAmount"
        ErrorMessage="Application amount is required." 
        EnableClientScript="true" 
        Enable="true"
        Display="Dynamic"
        runat="server">+++</asp:RequiredFieldValidator>
    
    <asp:TextBox ID="txtApplicationAmount" Columns="6" runat="server" />
    
    <br /><br />
    
    <asp:Button ID="btnSave" runat="server" Text="Send Application" 
         CausesValidation="true" />
    
    </form>
    
    
    </body>
    </html>
    

    该页面有一个带有RequiredFieldValidator的文本框。还有一个ValidationSummary控件和一个提交按钮。(我添加了在卸载时调用的TEST()方法,用于在回调之前检查页面的状态。)不进行客户端验证;相反,请求被发送回服务器。如果我在服务器上调用Validate(),那么我会得到验证。

    <script type="text/javascript">
    <!--
    var Page_ValidationActive = false;
    if (typeof(ValidatorOnLoad) == "function") {
        ValidatorOnLoad();
    }
    
    function ValidatorOnSubmit() {
        if (Page_ValidationActive) {
            return ValidatorCommonOnSubmit();
        }
        else {
            return true;
        }
    }
    // -->
    </script>
    

    请注意,Page_ValidationActive设置为False,这意味着ValidatorOnSubmit始终返回true。这对我来说似乎很奇怪,除了我查看了“WebUIValidation.js”,发现ValidatorCommonOnSubmit无论如何都不会验证页面——page_ClientValidate()方法会验证页面,但我该如何让它运行呢?

    在我的TEST()方法中,当我手动调用Page_ClientValidate()时,表单确实会按预期在客户端进行验证,并且回发请求会被发送回服务器。

    我错过了什么?

    1 回复  |  直到 3 年前
        1
  •  2
  •   Chad Ruppert    17 年前

    推荐文章