2009-10-29 108 views
2

我想寫一個自定義的驗證器,它在用戶回發之前不做任何事情(即不會爲其生成JavaScript)。驗證器應確保名稱爲hello的POST參數。該參數的值必須是逗號分隔的整數字符串。ASP.NET:編寫一個自定義的服務器端驗證器

我想將其作爲實際驗證程序的原因是我想將錯誤消息集成到我正在使用的驗證摘要中,該摘要顯示錯誤的項目符號列表。

那麼我從哪裏開始呢?

回答

2

首先,自定義驗證控件添加到頁面

<asp:CustomValidator ID="MyValidator" runat="server" ErrorMessage="My error message" 
    OnServerValidate="MyValidator_OnServerValidate" /> 

然後在你的代碼隱藏添加MyValidator_OnServerValidate方法。

protected void MyValidator_OnServerValidate(object sender, ServerValidateEventArgs e) 
{ 
     e.IsValid = false; 

     // Validation logic goes here 
     if(Request.Form["hello"] == null) 
      return; 

     ... 

     // If we have made it this far, then everything is valid 
     e.IsValid = true; 
} 
0

驗證摘要也適用於客戶端錯誤。也就是說,您不必回發以獲取驗證摘要以顯示新錯誤。事實上,作爲一種策略,我建議儘可能將客戶端腳本儘可能地作爲服務器端檢查。至少 - 啓用時 - 客戶端檢查可以幫助減少網絡聊天,服務器資源並改善用戶體驗。

+0

我問這個問題有一段時間了,但我認爲我說我只想要服務器端驗證的原因是我很難理解自定義驗證器,並且解釋如何更簡單如果它應該只是服務器端的話,它們會工作。我不記得說實話。 – 2010-08-03 19:01:26