我正在尝试运行客户端验证.我把一个非常简单的测试放在一起 – 文件名是aTET3.aspx:
- <%@ 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控件和一个提交按钮. (我添加了在Unload上调用的TEST()方法,以便在回调之前检查页面的状态.)不会发生客户端验证;相反,请求被发送回服务器.如果我在服务器上调用Validate(),那么我会得到验证.
我尝试将ValidateRequest =“true”添加到Page指令,结果相同.
当我查看发出的Javascript时,有一些事情会向我发出.这是它的一部分:
- <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()时,表单确实按预期验证了客户端 – 并且回发请求被发送回服务器.
我已经使用FireFox 3.0.10和MSIE 7进行了测试,结果相同.
我希望我错过了一些非常基本的东西,我最终会觉得非常愚蠢 – 任何人都可以指出它吗?