【问题标题】:ASP.NET broken rendering of Validation client side code in FirefoxASP.NET 在 Firefox 中破坏了验证客户端代码的呈现
【发布时间】:2010-09-30 04:03:53
【问题描述】:

这个对我来说是一个障碍。尽管是一个相当晦涩的问题,但它很容易复制。它是在我在网页上做一些 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 的验证代码工作正常……但 Not 是否适用于 Firefox。当按下提交按钮(带有一个空文本框)时,客户端代码似乎被忽略并执行回发。现在验证错误在服务器端被捕获 - 但我想首先知道它为什么不能在客户端工作。

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

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

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

【问题讨论】:

  • 你能在两种情况下(工作和不工作)发布生成的 JavaScript 吗?
  • 我们在这里讨论的是什么版本的 Firefox?您是否确保清除缓存以确保没有旧文件?
  • 请发布生成的 HTML 源代码,然后我们可以发现错误。

标签: asp.net javascript iis validation


【解决方案1】:

检查您的 web.config 是否符合 xhtml 并确保它未设置为旧版。

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

【讨论】:

    【解决方案2】:

    我在类似的设置中遇到了同样的问题。到目前为止,browserCaps 设置的差异是我遇到的最有希望的可能性。

    http://msdn.microsoft.com/en-us/library/sk9az15a(VS.80).aspx

    【讨论】:

    • 在发布问题之前,我实际上也花了相当多的时间沿着这条路走下去。从 Response.Browser 对象可以看出,QA 和 Dev 都可以正确识别浏览器。尝试了 web.config 中的 browscap 条目并更新了 browsercap.ini 文件(尽管它不是特定于 asp.net)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2013-12-12
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多