2010-02-03 72 views
2

我正在做一些遗留项目的工作,一个已经从1.1年升级到2.0,现在已经设置为3.5的项目。目前,我在点击提交时遇到了一些需要的字段验证程序未运行的问题。Asp.net验证程序没有激发

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

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

感谢,

迈克

+0

这是我刚才注意到的奇怪现象。如果我进入提交按钮的单击事件的事件处理程序并添加工作(如果myTextBox.Text <>“”Then ...),那么页面将回发并且验证器将会触发。如果我删除它,那么页面就会弹出。这有点令人困惑,因为如果我理解生命周期的过程如何,它应该在执行控件事件代码之前执行服务器验证。 – mclark1129 2010-02-03 16:30:03

+0

你需要显示你的html代码。 – 2010-02-03 16:44:17

回答

0

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

0

如果您收到的JavaScript错误,比这将是为什么你的验证控件的不点火。

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

+0

在这种特殊情况下,我并没有真正获得Javascript错误,但是我使用了其他一些客户端控件,这些控件向我建议我的客户端设置不正确。当我发现这些错误时,通常是在ScriptResource.axd内部的某个地方?id = a121939d类型的脚本,有一些错误,比如“Sys.Webforms Is Undefined”或“Object Expected”或其他难以诊断的问题。再次,这些在这种特殊情况下并不实际发生。 – mclark1129 2010-02-03 16:27:21

2

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

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

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

我刚刚在大约同一时间做了一个相关的评论:)。当我添加一些代码服务器端手动检查时,验证器将工作(回发后,而不是客户端)。当我删除它们时,它们会破裂。 – mclark1129 2010-02-03 16:32:41

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