【问题标题】:Asp.net Validators not FiringAsp.net 验证器未触发
【发布时间】:2011-01-12 16:47:09
【问题描述】:

我正在为一个遗留项目做一些工作,该项目多年来已从 1.1 升级到 2.0,现在设置为 3.5。目前,当我单击提交时,我遇到了一些必填字段验证器未运行的问题。

这是一个非常简单的设置。我有两个文本框,当用户单击提交时,我都需要填写,我有 RFV 指向每个文本框,但是当我单击提交按钮时,不会触发验证,然后生成的代码会爆炸。我尝试在相关控件上同时使用 ValidationGroup 并将显示从“动态”更改为“静态”,但没有结果。

我在使用 AJAX 控件时也遇到了一些问题,其中出现了 javascript 错误等,对我而言,这表明有关客户端库的配置不正确。当然,我不确定如何查明配置中的错误。有什么建议吗?

谢谢,

迈克

【问题讨论】:

  • 这是我刚刚注意到的一些奇怪的事情。如果我进入提交按钮的单击事件的事件处理程序并添加解决方法(如果 myTextBox.Text "" Then ... ),则页面将回发并且验证器将触发。如果我删除它,那么页面就会爆炸。这有点令人困惑,因为如果我了解生命周期是如何进行的,它应该在执行控件事件代码之前执行服务器验证。
  • 你需要展示你的html代码。

标签: asp.net validation client-side


【解决方案1】:

至于具体的错误,我不确定,但我会提醒你修改你的代码,以确保你在服务器端没有问题。

在您的方法中添加检查以确保验证器有效。

if(Page.IsValid)
{
    //Now do your thing
}

【讨论】:

  • 我刚好同时在上面发表了相关评论:)。当我添加一些代码服务器端进行手动检查时,验证器将起作用(在回发之后,而不是客户端)。当我删除它时,它们会破裂。
【解决方案2】:

如果您收到 javascript 错误,这就是您的验证控件没有触发的原因。

尝试使用名为 FireBug 的工具来查明您的 javascript 错误是从哪里引起的。

【讨论】:

  • 在这种特殊情况下,我实际上并没有收到 Javascript 错误,但是我使用了一些其他的客户端控件,这表明我的客户端设置并不完全正确好好工作。当我确实收到这些错误时,它通常位于 ScriptResource.axd?id=a121939d 类型脚本的深处,其中包含一些错误,例如“Sys.Webforms 未定义”或“预期对象”或其他一些难以诊断的问题。同样,在这种特殊情况下,这些实际上并没有发生。
【解决方案3】:

我在 Telerik 的支持论坛上研究类似问题时找到了解决方案。诀窍是从 web.config 中删除标签 <xhtmlConformance mode="Legacy"/>,因为这会以某种方式阻止正确的 JS 库被加载到页面中。

【讨论】:

    【解决方案4】:

    虽然这不是专门针对您的案例的答案,但这是对“Sys.WebForms 未定义”的一个答案,此链接显示在顶部搜索结果中。所以我想把这个答案包括在内,给那些浪费了 2 天时间试图找到答案的人。

    如果 Mike C 给出的答案对您不起作用,并且您使用的是晦涩或更新的浏览器,请考虑发送到 ASP.Net 的用户代理标头是否导致它“禁用”ajax。

    就我而言,此错误仅在 iPad 全屏模式下发生。答案是告诉 ASP.Net 浏览器支持 ajax。我只是将它添加到我的页面代码后面:

    protected override void OnPreInit(EventArgs e)
    {
        if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparison.CurrentCultureIgnoreCase) > -1)
        {
            this.ClientTarget = "uplevel";
        }
    
        base.OnPreInit(e);
    }
    

    更多详情,请参阅Sys.WebForms is undefined on iPad

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多