自定义验证器触发但它不会更新 ValidationSummary

2023-12-31

您好,我正在开发一个自定义表单字段验证器,似乎自定义验证器正在工作,不允许它继续到下一页,但它不会更新验证摘要,也不会显示我的星号和标签。已经变得可见。我在同一字段上还有其他验证器,例如RequiredFieldValidator。我的 ValidationGroup 已设置,Text 和 IsValid 也已设置。我什至按照一些解决方法的建议,在 JavaScript 中编写并设置了一个虚拟客户端验证方法。

这是asp.net中的验证摘要代码

<asp:ValidationSummary ID="ValidatorSummary" runat="server" ValidationGroup="Step2" />

这是自定义验证器和必填字段一

<asp:CustomValidator ID="AddressVerification" runat="server" ErrorMessage="Please enter a valid address." Display="Dynamic" ValidationGroup="Step2" OnServerValidate="AddressVerification_ServerValidate" ClientValidationFunction="CustomValidatorDummy" Text="*" Enabled="true" EnableClientScript="true"></asp:CustomValidator>
<asp:RequiredFieldValidator ID="RFValidatorHomeAddress" runat="server" ErrorMessage="Please enter home address." Text="*" Display="Dynamic" ValidationGroup="Step2" ControlToValidate="txtHomeAddress"></asp:RequiredFieldValidator>

这是后面代码中的自定义验证方法

protected void AddressVerification_ServerValidate(object sender, ServerValidateEventArgs e)
{
//lets just say it doesn't validate and sets the IsValid to false
lblUspsValidatorResHomeCity.Visible = true;
lblUspsValidatorResHomeState.Visible = true;
lblUspsValidatorResHomeZip.Visible = true;
e.IsValid = false;
}

请指教,谢谢。

编辑: 已回答 - 正如 bitxwise 提到的。验证摘要也应放置在更新面板内。谢谢!

Like so:

<asp:UpdatePanel ID="UpdatePanelValidationSummaryHome" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
    <asp:ValidationSummary ID="AddressHomeValidationSummary" runat="server" ValidationGroup="AddressHomeValidationGroup"
        CssClass="errors" /> 
</ContentTemplate>

然后调用更新:

UpdatePanelValidationSummaryHome.Update();

你似乎失踪了ControlToValidate在你的声明中CustomValidator.

EDIT

如果您的 CustomValidator 聚合了多个控件,请尝试以下操作:

ASPX

<asp:TextBox ID="txtMyTextBox" runat="server" />
<asp:CustomValidator ID="AddressVerification" runat="server"
    Display="Dynamic"
    ErrorMessage="Please enter a valid address."
    OnServerValidate="AddressVerification_ServerValidate"
    Text="*"
    ValidationGroup="Step2" />
<asp:RequiredFieldValidator ID="rfvAddress" runat="server"
    ControlToValidate="txtMyTextBox"
    Display="Dynamic"
    ErrorMessage="Please enter an address"
    Text="*"
    ValidationGroup="Step2" />
...
<asp:ValidationSummary ID="ValidatorSummary" runat="server"
    ValidationGroup="Step2" />
...
<asp:Button ID="btnCheckAddresses" runat="server"
    CausesValidation="true"
    Text="Check Addresses"
    ValidationGroup="Step2" />

CS

protected void AddressVerification_ServerValidate(object source, ServerValidateEventArgs args) {
    args.IsValid = !string.IsNullOrEmpty(txtMyTextBox.Text) && !txtMyTextBox.Text.Contains(' ');
}

请注意,调用回发的控件的验证组有CausesValidation="true"并且有相同的ValidationGroup作为验证者。

EDIT 2

如果您的回发控件位于UpdatePanel但是ValidationSummary不是,那么部分回发就不会刷新ValidationSummary。一旦您从UpdatePanel,我想它会生成一个完整的回发,这将刷新你的ValidationSummary.

我不知道你的里面还有什么UpdatePanel, but 许多人报告说他们的验证器存在问题UpdatePanel's http://www.eggheadcafe.com/community/aspnet/7/10060098/validation-is-not-working-in-update-panel.aspx.

查看MSDN http://msdn.microsoft.com/en-us/system.web.ui.webcontrols.validationsummary.aspx,

当您使用 ValidationSummary 时 UpdatePanel 控件内的控件, 确保验证器控制 以及与之关联的控件 位于同一面板中。了解更多 有关使用的信息 部分页面的 UpdatePanel 控件 更新,请参阅部分页面渲染 概述。

还有这个MSDN 博客 http://blogs.msdn.com/b/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义验证器触发但它不会更新 ValidationSummary 的相关文章

随机推荐

  • 使用 JNI 在 C++ 中调用方法?

    所以我一直在研究 JNI 调用 以便我可以与一些预先编写的 C 程序进行交互 我不了解任何 C 但我正在尝试学习一些基础知识 我刚刚尝试对 JNI 方法之外的方法进行简单调用 但总是收到以下错误 错误 c3861 myMethod 找不到标
  • CORS / xhr.getRequestHeaders

    问候 我正在尝试使用 CORS http www w3 org TR 2009 WD cors 20090317 access control allow methods header http www w3 org TR 2009 WD
  • Java regex - 从匹配文本中获取行号

    它基于我的上一个问题 https stackoverflow com questions 34758621 java get text from jtextarea by number line 对于我的情况 我想从正则表达式模式中获取行数
  • 为什么不重用“ASP.NET_SessionId”?

    我是 ASP NET 新手 我不明白为什么不重用 ASP NET SessionId 据我了解 每次用户从服务器请求页面时 IIS 都会为他创建一个 ASP NET SessionId 并将其放入用户浏览器的 cookie 中 我在这里读到
  • C# 4.0 编译器崩溃

    此代码示例 http pastie org 2757961无法编译 有什么解决办法吗 using System using System Collections Generic using System Linq using System
  • 如何对mysql数据库中的电子邮件进行加密但仍然能够查询它们?

    我想使用加密将用户的电子邮件地址存储在 MySQL 数据库中 以确保如果数据库遭到破坏 这些地址不会被公开 我相信如果我用 mysql 加密它们AES ENCRYPT https dev mysql com doc refman 5 1 e
  • 查看当前页面时预加载第二页

    假设我的网站有 5 页内容 当访问者查看第一页时 是否可以预加载接下来的两页 这样 当他们单击第二页或第三页的链接时 它就会立即出现 当然 你可以有一些像这样的隐形容器 HTML div a href page2 html Go secon
  • 使用 awk 解析 csv 并忽略字段内的逗号

    我有一个 csv 文件 其中每一行定义给定建筑物中的一个房间 除了房间之外 每行都有一个地板区域 我想要提取的是所有建筑物的所有楼层 我的文件看起来像这样 u floor u room name 0 00BDF AIRPORT TEST 0
  • Typedef 声明的形式为“int typedef my_int;”

    声明my int作为类型别名int我们可以写 typedef int my int 1 奇怪的是 以下似乎也定义了int alias int typedef my int 2 我以前从未见过这样的语法 为什么它有效 我读后的推理C 参考 h
  • 自定义类型文件到 Angular 6

    我正在尝试以角度方式广告一些自定义类型定义文件 但面临一些错误 在应用程序文件夹中 我有外部文件夹 其中有 external d ts 文件和下面的代码 declare function format input string args s
  • 如何包含目录中保存的所有CSS?

    html中是否可以同时包含多个css 或者更准确地说 是否可以一次性包含放置在一个目录中的所有 css 就像目前我们所做的是 我需要类似的东西 是否可以 或者有什么替代方案吗 您可以创建一个主样式表 将其包含在每个页面中 并在该 css 文
  • 在 Laravel 4 中重定向回时保留表单值

    我试图在 Laravel 4 上 Redirect back 时保留表单的值 但我找不到方法来做到这一点 这是我的表格 Form open array route gt generate files gt true Form radio m
  • 将 GWT-RPC-Applicaton 部署到 JBoss AS 7.1.1 时出现 ClassNotFoundException

    我有一个 Maven 基础 GWT 应用程序 当我通过 Maven 编译 构建并部署它到 JBoss AS 7 1 1 时 我的 GWT RPC Service 出现了 ClassNotFoundException 在我包含之前 我部署了并
  • INVALID_STATE_ERR:DOM 异常 11

    我正在开发一个简单的辅助类来使用 XmlHttpRequest 发送请求 代码如下 但我无法让它发挥作用 例如 在 google chrome 中 我收到错误INVALID STATE ERR DOM Exception 11在其他浏览器上
  • 子进程命令的实时输出

    我使用 python 脚本作为流体动力学代码的驱动程序 当需要运行模拟时 我使用subprocess Popen要运行代码 请收集输出stdout and stderr into a subprocess PIPE 然后我可以打印 并保存到
  • 如果文本太长,如何自动显示工具提示?

    在 Windows 应用商店应用程序中 我有以下 TextBlock
  • 为什么 cmd.exe 在 64 位计算机上具有不同的错误级别行为?

    如果我制作一个名为 temp bat 的批处理脚本 例如 其中包含 exit b 1 当我以各种方式运行它时 我在 32 位 XP 系统和 64 位 XP 系统上得到不同的行为 在 32 位上 gt temp bat gt echo ERR
  • 如何在没有 Manifest.mbdx 的 iOS 5.0 beta 2 中解析 Manifest.mbdb 文件

    我有一个用 iOS 5 beta2 还有 iTunes 10 5 beta 制作的备份 但令我惊讶的是 它不包含 mbdx 文件 The mbdb文件看起来与以前的格式相同 如何匹配文件 ID 和文件名而不需要Manifest mbdx 备
  • PATH 中的其他脚本

    我尝试使用 Homebrew 在 OS X 10 7 5 上安装 Rails 并继续收到以下警告 我已经尝试了很多次更改 PATH 以排除 Python 目录 修改 bash profile 但我什至不确定这就是导致警告的原因 如果这是严重
  • 自定义验证器触发但它不会更新 ValidationSummary

    您好 我正在开发一个自定义表单字段验证器 似乎自定义验证器正在工作 不允许它继续到下一页 但它不会更新验证摘要 也不会显示我的星号和标签 已经变得可见 我在同一字段上还有其他验证器 例如RequiredFieldValidator 我的 V