Asp.net验证者没有被解雇

时间:2010-02-03 16:16:08

标签: asp.net validation client-side

我正在为一个遗留项目做一些工作,这个项目已经从1.1升级到2.0,现在设置为3.5。目前我遇到一些问题,当我点击提交时,所需的字段验证器没有运行。

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

在使用AJAX控件时我也遇到了一些问题,我得到了javascript错误等等,这对我来说会指向关于客户端库的错误配置。当然,我不确定如何去查明配置中的错误。有什么建议吗?

谢谢,

麦克

4 个答案:

答案 0 :(得分:2)

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

在方法中添加一个检查,以确保验证器有效。

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

答案 1 :(得分:0)

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

尝试使用名为FireBug的工具来确定您的javascript错误产生的位置。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

虽然这不是特定情况的答案,但这是 对“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