2010-02-03 44 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