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



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

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

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

在服务器端,使用 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.";
}

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

这样,您将拥有依赖性Saperation并实现所需的行为,而不会过度填充方法(只需在方法入口处进行一次调用(

相关内容

最新更新