由於運行時限制,我正在使用較早版本的ASP.NET AJAX,因此在更新面板中放置ASP.NET驗證器不起作用。是否有一個技巧可以使這些工作成功?還是我需要使用AJAX工具包附帶的ValidatorCallOut控件?UpdatePanel中的ASP.NET驗證器
回答
我懷疑你正在運行的.NET 2.0的原始發佈(RTM)。
直到2007年初,驗證器控件與UpdatePanels不兼容。這是用.NET Framework的SP1解決的。
問題的根源在於UpdatePanel可以檢測頁面中的標記更改,但無法正確跟蹤腳本。驗證器嚴重依賴於腳本。在部分回發期間,腳本要麼被吹走,不能更新,要麼在運行時不運行。
在早期的貝塔斯,MS有UpdatePanel嘗試猜想什麼腳本需要重新呈現或運行。它工作不太好,他們不得不把它拿出來。
爲了解決當前的問題,Microsoft在一個名爲Validators.DLL的新DLL中發佈了校驗器類的修補版本,並給出瞭如何告訴ASP.NET使用這些類而不是真實類的說明。如果你是Google的那個DLL名字,你應該找到更多的信息。另見This blog post。
這是一個停止不前的措施,你應該
不使用它
如果可能的話避免它。
問題的真正解決方案是在.NET 2.0 SP1之後不久。微軟推出了一種在SP1中註冊腳本的新機制,並將真正的驗證器類改爲使用該機制而不是舊版本。
讓我給你上的變化的一些細節:
傳統上,你應該通過頁面的方法,如Page.RegisterStartupScript()和Page.RegisterClientScriptBlock()註冊腳本。問題是這些方法不是爲擴展性設計的,UpdatePanel無法監視這些調用。
在SP1中,頁面上有一個名爲Page.ClientScripts的新屬性對象。這個對象有一些方法來註冊與原來的腳本是等價的(在某些方面更好)。此外,UpdatePanel可以監視這些調用,以便它在適當的時候重新渲染或調用方法。較舊的RegisterStartupScript()等方法已被棄用。他們仍然工作,但不在UpdatePanel中。
沒有理由(除了政治,我想)不更新您的安裝到.NET 2.0 SP1。 Service Pack包含重要的修復程序。
祝你好運。
@jmein
其實問題是,裏面放置一個UpdatePanel時(UpdatePanel的刷新使用.innerHTML,這增加了腳本節點爲文本節點,沒有腳本節點驗證客戶端腳本的不工作,所以瀏覽器不會運行它們)。
此修復程序是由微軟發佈的修補此問題的修補程序。我在Google的幫助下找到了它。
http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
@Jonathan Holland:使用Validators.dll有什麼問題?
由於它們會替換原始類,因此您正在悄悄繞過微軟未來可能發佈(或可能已經發布)的任何錯誤和安全修復程序,增強功能等。除非仔細看看web.config,否則您可能永遠不會注意到您正在跳過修補程序。
當然,你必須評估每種情況。如果你絕對堅持使用.NET 2.0 RTM,那麼Validators.dll總比沒有好。
如果什麼都原因而無法使用ASP.NET驗證控件的udpated版本其實很容易給自己驗證驗證組,所有你需要做的就是調用
Page_ClientValidate("validationGroupName");
然後您可以使用PageRequestManager根據需要執行驗證。
明確使用更新的驗證控件是要走的路,但我很偏向於JavaScript;)
- 1. asp.net的UpdatePanel和驗證器問題
- 2. 具有驗證控件的ASP.NET 3.5 UpdatePanel。驗證運行意外
- 3. 嵌套UpdatePanel驗證
- 4. jQuery驗證和UpdatePanel的,
- 5. ASP.NET驗證器
- 6. 使用UpdatePanel外部的按鈕驗證UpdatePanel中的控件
- 7. 文本框控件驗證在GridView的內部的UpdatePanel C#ASP.Net
- 8. asp.net 「比較驗證器」 驗證
- 9. ASP.NET - 驗證自定義驗證器
- 10. ASP.NET驗證器在鼠標上驗證
- 11. Javascript驗證覆蓋ASP.NET驗證器
- 12. ASP.NET驗證器和jQuery的
- 13. ASP.NET UpdatePanel中的HelpBallon.js
- 14. 如何創建與UpdatePanel一起使用的自定義asp.net驗證器?
- 15. asp.net中的服務器端驗證
- 16. Asp.net中的日期驗證器
- 17. asp.net中下拉列表的驗證器
- 18. ASP.NET 2.0中的服務器端驗證
- 19. 在ASP.Net中的AJAX日期驗證器
- 20. ASP.net中的自定義驗證器
- 21. HTML 5驗證器標註中的驗證組,如Asp.Net
- 22. 如何使用ASP.Net中的驗證器動態驗證年份?
- 23. 使用驗證器控件驗證asp.net中的日期字段
- 24. 使用asp.net驗證器驗證2個字段中的1個
- 25. 通過UpdatePanel調用導致ASP.NET驗證(css)不顯示
- 26. UpdatePanel中的計時器問題Asp.net C#
- 27. ASP.NET AJAX服務器控件中的UpdatePanel
- 28. 服務器端驗證asp.net
- 29. ASP.NET驗證服務器端
- 30. ASP.NET服務器驗證
謝謝!我的一臺服務器顯示了這種行爲,實際上,它缺少sp1。 – edosoft 2008-11-02 19:40:30