2009-01-12 62 views
1

我有一個使用RequiredFieldValidator控件和ValidationSummary的應用程序,一旦點擊了「Finish」按鈕,所有的字段都會被驗證。這個頁面有幾個不同的部分可見或不可見,我注意到驗證程序只激活可見控件並忽略不可見控件。這是我的程序使用的有用功能。ASP.NET 2.0 - 驗證同一頁面上的不可見控件?

但是....

我有一個需要驗證是不可見的,因爲我分手了一個很長的網頁的部分成段的控制。所以我想知道是否有辦法手動強制visible = false驗證控件(或者是不可見表的一部分的驗證控件)在Page.IsValid上驗證,而不必再次使它們可見?

在此先感謝!

P.S.我嘗試使用ValidationGroup屬性來查看是否會捕獲它們,但它沒有。

回答

1

如果該控件不是可見的,那麼html不會被驗證。而不是設置Control.Visible = false,而是嘗試設置一個css類來隱藏它。

在樣式表:

.invisible { visibility:hidden; } 

然後代替。可見=假用途:

Control.CssClass = "invisible"; 
+0

好主意,我喜歡它!簡單而靈活。 :) 我會試一下。 – n2009 2009-01-13 16:16:34

0

如果頁面被分成多個段並且只顯示頁面的一部分,那麼您是否可以驗證顯示新段的方法?一旦隱藏了該控件的有效狀態,就不應該受到影響。 (除非我猜的依賴性。)。

不要讓他們用無效輸入切換頁面的片段。

另一種方法是使用css使控件不可見,而不是服務器端。控件可以顯示在div中:none;所有控件都將與驗證摘要一起呈現。

0

如果您將這些控件設置爲不可見的服務器端,那麼它們甚至不會呈現在客戶端上進行驗證。

您是否使用AJAX在您的部分之間切換/使控件不可見?如果是這樣,那麼在切換控件隱形之前,您應該驗證這些部分頁面回發的控件(如Jeff Martin所建議的)。

我想我們需要一些關於如何做這件事的更多信息來給你一個很好的答案。


好吧,所以沒有AJAX(根據您的評論)......如果你使用ASP.NET驗證控件他們有一個客戶端部分和服務器端部分。你可以看到驗證器在代碼隱藏的事件處理程序中是否有效。你可能需要做一些特定的事情,讓他們在服務器端啓動驗證代碼,並且你的不可見控件可能不會在多次回發之間保留它們的值。但它應該是可行的。

這裏的要點是可以設置ASP.NET驗證控件,以便它們不會執行任何客戶端操作,但它們仍然提供驗證服務器端。你基本上就在那條船上。

我認爲this MSDN article有你需要的。

+0

沒有使用AJAX,當單擊「完成」時,頁面回發。迷你頁面之間切換的是一個asp.net LinkBut​​ton,它根據它們在哪個頁面上循環可見控件共7頁),該按鈕也回發,代碼在服務器端(在隱藏代碼頁) – n2009 2009-01-13 16:15:32

0

針對邁克康斯托克的帖子第二評論(我沒有足夠的聲譽尚未就此發表評論:()...

刪除間距嘗試:

.invisible { visibility:hidden; display:none; }