2016-04-07 38 views
1

我有一個WebForms應用程序,不希望用戶輸入無效值。如何強制使用服務器驗證而不是僅使用客戶端?

我目前正在與驗證,控制這樣的解決這個:

<asp:TextBox runat="server" ID="tbInsert"></asp:TextBox> 
<asp:RequiredFieldValidator runat="server" ControlToValidate="tbInsert" ID="rqtbInsert" 
    ErrorMessage="Required"> 
</asp:RequiredFieldValidator> 

但這驗證值只是客戶端(可以由用戶來避免)

我是不是要爲每個控制添加服務器端驗證?應該怎樣做?

if (!string.IsNullOrEmpty(tbInsert.Text)) 
{ 
    //do sth. 
} 

回答

5

驗證器不僅檢查客戶端。所有具有CausesValidation=true的控件將在服務器端觸發Page.Validate(),這將導致所有相關(如果指定了ValidationGroups,否則全部爲)驗證程序進行驗證。

因此,客戶端檢查是可選的,可以通過EnableClientScript啓用/禁用,而服務器端檢查總是發生,也可以用Page.Validate-方法以編程方式觸發。

1

在服務器端,使用Page.IsValid屬性來檢查是否所有驗證控件都通過了,它返回一個值,指示頁面驗證是否成功。從MSDN Page.IsValid

private void ValidateBtn_Click(Object Sender, EventArgs E) 
{ 
    Page.Validate(); 
    if (Page.IsValid == true) 
     lblOutput.Text = "Page is Valid!"; 
    else 
     lblOutput.Text = "Some required fields are empty."; 
} 
0

而不是爲每個控件添加驗證。添加靜態驗證助手類並將模型的所有驗證方法寫入同一個類。 只需要從服務器端的接收方法驗證所有的每種方法。

這樣你就可以有依賴性的操作,並實現所需的行爲而不會過度使用該方法(只需在方法入口處進行一次調用)

相關問題