我正在尝试运行客户端验证。我已经编写了一个非常简单的测试-文件名为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控件和一个提交按钮(我添加了TEST()方法,在Unload上调用,以检查回调之前页面的状态)。相反,请求被发送回服务器。2如果我在服务器上调用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()时,表单确实如预期的那样在客户端得到验证-并且回发请求被发送回服务器。
我已经用火狐3.0.10和IE 7进行了测试,结果相同。
我错过了什么?
1条答案
按热度按时间mwyxok5s1#
你必须把所有的验证都放在同一个验证组中,包括触发验证的按钮。