2011-01-05 60 views
1

我有一個自定義驗證器,其中驗證控件的腳本是客戶端JavaScript。ASP.NET自定義驗證器 - Page.Validate(「groupName」)不會觸發?

在我的網站後面的VB代碼我打電話Page.Validate("groupName"),但我的驗證腳本根本沒有被解僱。我在JavaScript中放置了一個斷點,但它甚至沒有觸及我的驗證腳本。而當我在非自定義驗證器上使用相同的函數時,它可以工作。

我想通過Page.Validate("groupName")在我的VB後面的代碼中調用我的客戶端驗證腳本是不可能的。我絕對需要服務器端驗證功能嗎?

下面是一些代碼:

<asp:CustomValidator ID="ValidateTxt" runat="server" 
    ClientValidationFunction="validateTxt" 
    ControlToValidate="txtBox" 
    Display="Dynamic" 
    ValidationGroup="group1"> 
</asp:CustomValidator> 

<script type="text/javascript" language="javascript" > 
    function validateFinHeight(source, arguments) 
    { 
     if(arguments.Value % 2 == 0){ 
      arguments.IsValid = true; 
     }    
    } 
</script> 

VB代碼背後:

Protected Sub cbo(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbo.SelectedIndexChanged 
    Page.Validate("group1") 
End Sub 

Page.Validate("group1")不叫我的JavaScript函數。

+0

是的,你絕對需要服務器端的驗證,因爲用戶可以繞過你的JavaScript檢查,並提交他們想要的任何表單。唯一確定的方法是在服務器端進行檢查。 – Greg 2011-01-05 20:20:06

+0

我並不擔心用戶繞過,因爲這是一個簡單的Web應用程序,只會在我工作的公司中大約3-4人使用。它不會向公衆開放,人們將會嘗試這種骯髒的東西。 – Johnrad 2011-01-05 20:29:44

回答

3

Page.Validate用於驗證在服務器一側。如果您想觸發客戶端驗證,請從您的JavaScript代碼中調用功能Page_ClientValidate("group1")