2010-06-02 32 views
5

我有一個使用ASP.NET驗證的表單。我在aspx中使用了一些內聯C#來根據用戶的角色顯示/隱藏某些控件。我會使用Visible屬性,但其中有很多,我只是決定內聯C#來顯示和隱藏(我知道,不是最佳實踐,但忍受了我一秒鐘)。我有一個問題,當我提交表單時(當某些字段被隱藏時),Page.IsValid始終設置爲False。即使這些控件甚至沒有呈現在pag上,驗證仍然會觸發嗎?此外,如果情況並非如此,是否有一種有效的方法來分解Page.IsValid以找出將其設置爲False的內容?謝謝。即使隱藏控件,驗證仍然在ASP.NET中觸發嗎?

+0

你是什麼意思的內聯C#?你正在設置顯示:無?我不是很清楚你在做什麼 – 2010-06-02 23:17:36

+0

<%if(newClubRequest)%> - 顯示一定的html – Josh 2010-06-02 23:20:31

回答

10

如果設置可見爲false,該控件將火驗證。 From ASP.Net Validation in Depth

爲什麼不只是使用Visible = false將 設爲隱形驗證程序?在ASP.NET中,控件的可見屬性具有非常強的含義:具有 Visible = false的控件將不會在 處理全部用於預先呈現或呈現。由於 這個更強的含義的結果, Visible = false對於驗證程序意味着 不僅不顯示 任何東西,它也不會運行 。它沒有被評估, 影響頁面有效性,並且不會在摘要中顯示 錯誤。

如果您想讓控件驗證但將其隱藏在頁面上,請使用CSS將顯示設置爲無。

+0

感謝您的迴應。這完全有道理。我是否需要在驗證和實際控制本身上設置Visible屬性?或者只是驗證?我有點心慌,因爲我的頁面正在做一個PostBack,並且我有大約10個需要的字段驗證器(隱藏的)沒有被解僱。如果你只是使用CSS隱藏HTML,它是否僅僅觸發定製/服務器端驗證?請指教。 – Josh 2010-06-02 23:29:13

1

驗證器仍然會火,你需要隱藏他們以及

+0

所以你說我需要將Visible屬性設置爲false,所有這些屬性都是false? – Josh 2010-06-02 23:20:52

+0

是的,如果您在數據綁定上下文中,則可以將可見性綁定到屬性。 alejandrobog 2010-06-02 23:24:41

+0

好的,謝謝。唯一的問題是,我猜測驗證是否在幕後被解僱,所需的字段驗證器會阻止表單完全被提交(我的情況並非如此)。有任何想法嗎? – Josh 2010-06-02 23:33:53

0

是的,驗證器會在客戶端隱藏時觸發。

如果通過使用display =「none」或visibility =「hidden」CSS屬性將驗證程序及其控件隱藏在客戶端,那麼驗證程序仍然會在客戶端和服務器端啓動。

如果你想驗證不計算在客戶端和服務器端/火,你必須設置這兩個屬性上的驗證代碼隱藏:Visible="false"Enabled="false"

1

控制驗證不火如果它試圖驗證的是不可見的。 visible =「false」

但是,它仍然會驗證它,而不是在該控件上執行hidden =「true」,以便它不會顯示給用戶,但希望它能夠驗證它。

相關問題