如何强制服务器端验证而不仅仅是客户端?

时间:2016-04-07 09:43:46

标签: c# asp.net validation

我有一个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.
}

2 个答案:

答案 0 :(得分:5)

验证者不仅检查客户端。具有CausesValidation=true的所有控件都将在服务器端触发Page.Validate(),这将导致所有相关的(如果ValidationGroups被指定,否则所有)验证器将被验证。

因此,客户端检查是可选的,可以通过EnableClientScript启用/禁用,而服务器端检查始终发生,也可以使用Page.Validate方法以编程方式触发。

答案 1 :(得分:0)

而不是为每个控件添加验证。添加静态验证帮助程序类,并将模型的所有验证方法写入同一个类。 从服务器端的接收方法中获取验证的所有方法。

通过这种方式,您将获得依赖性操作并实现所需的行为,而不会过多地填充方法(只需在方法条目中进行一次调用)