1

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

但是当我尝试在代码后面使用验证器时,它给了我这个Page.Isvalid属性,我对它的可靠性感到困惑。以下是我自己无法回答的问题:

  1. Validator 是否足够可靠,可以在客户端使用?(除了禁用javascript,它可以被操纵吗?)
  2. 这个 Validator 如何到达服务器端的有效性信息?(是否在某处生成了 C# Validator 代码,还是直接从客户端获取信息?)

这是我编写的用于在服务器端验证我的输入的代码:

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

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

4

1 回答 1

2

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

来自MSDN

当用户单击任何将CausesValidation属性设置为 true(默认值)的 ASP.NET 服务器控件时,将调用此方法。其中包括 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.NET 服务器控件CausesValidation的事件处理程序中将该属性设置为 true 。OnServerClick

于 2013-02-12T14:32:12.967 回答