簡體   English   中英

如何防止驗證用戶控件的事件處理程序?

[英]How to prevent validation for an event handler of a user control?

我有一個帶有刪除按鈕的用戶控件。 單擊按鈕后,將觸發一個事件,該事件將從數據庫中刪除一條記錄。 現在,將控件放置在Default.aspx 根據ASP.NET的要求, Default.aspx的整個標記(包括帶有按鈕本身的用戶控件)位於<form runat="server">中。 到目前為止一切正常。

但是,問題是當我在Default.aspx放入一些驗證控件時 (意味着在<form runat="server">因為否則頁面將報告服務器錯誤)。 添加驗證控件后,用戶控件中的刪除按鈕將停止工作。 單擊此按鈕不再像以前那樣觸發事件。

現在,我使用EnableEventValidation="false"指令在Default.aspx禁用了事件驗證。 我還包括UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None; 在文件后面的代碼中。 但是,這都沒有幫助。

如何解決此問題並使按鈕可單擊?

更新:

我肯定知道驗證控件是引起問題的原因,因為我只需要向每個控件添加EnableClientScript="False" ,然后該按鈕就可以單擊。 但我不想在客戶端手動重寫驗證!

事實證明,如果表單不是IsValid而不管是什么元素引起的,都不會發生PostBack 只要該元素(按鈕)在帶有runat="server"的表單內是無效的,就不會發生posback。

一個非常簡單的解決方法是僅使我的用戶控件中的Button繞過驗證: CausesValidation="False" (由於這個問題)。

另一種解決方案(也許是更有效的解決方案)是使用ValidationGroup 這樣,所有TextBox和提交Button將屬於一個組,那些不屬於該組的控件將不被驗證。 實際上,他們可能有自己的ValidationGroup 這樣可以避免在一個Web窗體中不同控件之間的干擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM