ASP.NET 破坏了 Firefox 中验证客户端代码的呈现

标签 asp.net javascript iis validation

这个对我来说是个难题。尽管这是一个相当晦涩的问题,但它很容易复制。当我在网页上做一些 javascript 工作时,它出现了,同时还利用了 ASP.NET 提供的验证控件。

前面的一些细节:使用基于 Vista 的开发机器和 3.5 框架和 IIS 7。我还有一台运行 Windows Server 2003 的 QA 机器,同样使用 3.5 框架但运行 IIS 6。

拿一个带有简单文本框、验证控件和按钮的页面来提交它们。例如:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Text is Required" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>  
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />  

这里是简单的 ASP.NET 验证控制代码 ... 这里的想法是为必填字段生成客户端验证代码,除非文本框有字段,否则不会执行回发。如果浏览器不支持客户端脚本,则 ASP.NET 将使用 Page.IsValid 属性在服务器端捕获它。

当我从基于 Vista 的开发机器上运行它时,为 IE 和 Firefox 生成客户端脚本代码并且工作很好。

当我从基于 win2003 的 QA 机器上运行时,也会为两个浏览器生成验证器控件的客户端代码。 IE 的验证代码工作正常...但 对 Firefox 工作。当按下提交按钮(带有空文本框)时,客户端代码似乎被忽略并执行回发。现在验证错误在服务器端被捕获 - 但我想首先知道为什么它在客户端不起作用。

这里有趣的怪癖是,如果我在 Firefox 下从开发机器(工作的机器)和 QA 机器(不工作的机器)获取页面源代码 View 并比较它们 - 客户端验证代码非常显着不同的。

关于如何更改以使客户端验证代码在 Firefox 中与 QA 机器一起工作的想法?

更新:有一些评论要求查看生成的源代码。我已将 Dev 和 QA 源保存为 .htm 文件并压缩它们。您可以在 http://www.optsolutions.com/testvalidation.zip 获得它们

最佳答案

检查您的 web.config 是否符合 xhtml 并确保它没有设置为 legacy。

http://aspadvice.com/blogs/rbirkby/archive/2006/11/01/Client_2D00_side-validation-in-Firefox.aspx

关于ASP.NET 破坏了 Firefox 中验证客户端代码的呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422554/

相关文章:

php - 为什么一些 MySQL 线程永远不会死?

javascript - 将参数传递给 asp.net 页面中的 javascript 函数

javascript - jQuery 一起从多个选择中获取值

JavaScript/html : Second onclick attribute

javascript - react |虚拟DOM元素点击事件未触发

http - 带有 ARR : Route soap message to different server depending of the soap content 的 IIS

ASP.NET:虚拟目录中的外部自定义配置文件 - 如何?

asp.net - VS2012 RC 中不识别外键

asp.net - 缓存来自 sql 数据库的结果,还是每次查询?

javascript - 如何停止自动在 iframe 中下载 PDF 而改为查看文件?