2009-01-07 41 views
1

這對我來說是一個挑戰。它很容易複製,雖然一個相當模糊的問題。這是因爲我在網頁上做了一些JavaScript工作,但也使用了ASP.NET提供的驗證控件。在Firefox中驗證客戶端代碼的ASP.NET斷裂呈現

一些細節前面:使用基於Windows Vista的開發機與3.5框架和IIS 7.我也有運行Windows Server 2003,也與3.5框架,但運行的QA機IIS 6

用簡單的TextBox,驗證控件和按鈕提交頁面。例如:

<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。當按下提交按鈕(帶有空白文本框)時,客戶端代碼似乎被忽略並執行回發。現在驗證錯誤被服務器端所捕獲 - 但我想知道爲什麼它不工作的客戶端擺在首位。

這裏有趣的怪癖是,如果我從開發機器(工作的那個)和QA機器(不工作的機器)在Firefox下采取頁面源代碼視圖並比較它們 - 客戶端驗證代碼是顯着不同的。

關於如何改變客戶端驗證代碼以使用QA機器在Firefox中工作的想法?

更新:有幾條評論要求查看生成的源代碼。我已經將Dev和QA源碼保存爲.htm文件並將其壓縮。你可以在http://www.optsolutions.com/testvalidation.zip

+0

你能夠發佈生成的JavaScript在這兩種情況下(工作和不工作)? – 2009-01-07 23:26:00

+0

我們在這裏談論什麼版本的Firefox?你有沒有確保清除緩存,所以你沒有舊文件? – epascarello 2009-01-08 01:55:47

回答