ASP.NET验证器的可靠性如何?

时间:2013-02-12 14:25:32

标签: c# javascript .net validation code-behind

我决定使用 ASP.NET Validator 来验证我的 WebForm 的几十个输入。它在客户端方面正常工作。我的意思是,我完全可以在没有“发布回页”等的情况下验证输入。

但是当我尝试在代码上使用Validator时,它会给我Page.Isvalid属性,并且我对它的可靠性感到困惑。以下是我自己无法回答的问题:

  1. Validator是否足够可靠,可以在客户端使用? (除了禁用 javascript ,是否可以操作?)
  2. 此Validator如何在服务器端上获取有效性信息? (是否在某处生成了C#Validator代码,或者是否直接从客户端获取信息?)
  3. 以下是我在服务器端验证输入的代码:

    foreach (IValidator iValidator in Page.Validators)
                {
                    if (!iValidator.IsValid) { return false; }
                }
    

    但是,它是否独立于.aspx和.js?我可以在服务器端依赖它吗?

1 个答案:

答案 0 :(得分:2)

您应该始终在服务器端验证,这主要是通过调用Page.Validate自动完成的。

来自MSDN

  

当用户单击任何ASP.NET服务器控件时,将调用此方法   将 CausesValidation 属性设置为true,即   默认。这些包括Button,ImageButton和LinkBut​​ton Web   服务器控件,HtmlInputButton,HtmlInputImage和HtmlButton   HTML服务器控件和可以自动回发的控件   服务器,如TextBox,CheckBox,ListControl和   BulletedList控件。

如果您想强制验证其他ValidationGroup,可以手动调用它:

Page.Validate("MyValidationGroup");
If(Page.IsValid)
{
    // ...
}

请注意,只有在调用Page.IsValid方法后才能检查Page.Validate,或者在ASP的CausesValidation事件处理程序中将OnServerClick属性设置为true。启动表单处理的.NET服务器控件。