2016-04-07 97 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

而不是为每个控件添加验证。添加静态验证助手类并将模型的所有验证方法写入同一个类。 只需要从服务器端的接收方法验证所有的每种方法。

这样你就可以有依赖性的操作,并实现所需的行为而不会过度使用该方法(只需在方法入口处进行一次调用)

相关问题