gpt4 book ai didi

asp.net - 如何让 ASP.Net 页面的客户端验证运行?

转载 作者:行者123 更新时间:2023-12-01 00:30:21 26 4
gpt4 key购买 nike

我正在尝试运行客户端验证。我整理了一个非常简单的测试 - 文件名为 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 进行了测试,结果相同。

我想我错过了一些非常基本的东西,我最终会觉得自己很愚蠢——有人能指出来吗?

最佳答案

您必须将所有验证内容放在同一个验证组中。包括触发验证的按钮。

关于asp.net - 如何让 ASP.Net 页面的客户端验证运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com