2012-06-08 129 views
0

我最近發現您需要在服務器端代碼中執行一些檢查以檢查頁面是否有效。我以前是在假設執行自動停止確認器發現不正確的輸入時。Asp.net驗證控件和服務器端驗證

我把下面的代碼在需要驗證我的事件:

if (!Page.IsValid) 
     return; 

這是做了正確的方法是什麼?

此外,如果我的頁面有兩個驗證組,那麼正確的組將自動在服務器上運行(由按鈕觸發)還是需要使用Page.Validate("groupName")來調用它?

謝謝

回答

2

最好檢查客戶端和服務器。客戶端部分應該爲你自動完成,但是如果有人使用任何方法繞過了你的UI,在服務器上檢查它是一種防禦措施。

您可以爲您的按鈕指定一個ValidationGroup,該值應與您分配給驗證器的ValidationGroup的值相同。當你點擊你的按鈕時,它可能會在同一組上執行客戶端驗證,並且如你所述,將停止執行(阻止回發)。

在服務器端,你會做的完全一樣,你提到的:

Page.Validate("WhateverGroup"); 
if (!Page.IsValid) 
    return; //Didn't pass validation 
else 
    //Do whatever 

如果你有多個組,那麼你應該如果適用檢查他們每個人的(一些團體可能不適取決於某些條件,這就是爲什麼你通常會使用組)。

編輯

在回答你的問題:

「默認」已籤由被張貼在頁面控制確定組。也就是說,如果發佈該頁面的控件具有「WhateverGroup」作爲其驗證組,則只驗證具有「WhateverGroup」的驗證器。

Page.IsValid只應該檢查你已經調用了Page.Validate方法。 Page.IsValid只是一個標誌,基本上在你打電話給Page.Validate的時候會被觸發,而某些東西無法驗證,無論你是否使用組來調用它。

參考文獻:

+0

所以在默認情況下它運行哪些羣體到底是什麼?僅僅檢查Page.IsValid是不夠的? – TheGateKeeper

+0

感謝您的編輯,但爲什麼您需要再次調用驗證程序,即使它們默認運行(如您所說)? – TheGateKeeper

+0

可以發佈到您的服務器而無需與您的網站進行交互。假設有人在銀行網站上這樣做,僅僅檢查客戶端是不夠的,他們最好還是檢查服務器。事實上,如果您是通過網站/單元測試您的網站,這實際上是通過發佈而不是實際與您的網站進行交互來實現所有操作的自動化,這是非常常見的。 – Jeremy