Page.IsValid检查内部?

时间:2012-11-26 16:17:54

标签: c# javascript asp.net .net-4.0

我想知道Page.IsValid如何获得它的价值。

如果页面有验证程序并且正在进行提交, asp.net引擎如何知道页面是否有效?

  • 客户端的结果是否保存在隐藏字段中? (我不这么认为因为它们不会产生任何隐藏的字段)。此外,我不认为它保持在视图状态。因为客户端可以添加到视图状态。

提前致谢。

2 个答案:

答案 0 :(得分:2)

验证实际上是在服务器级别完成的。点击提交后,所有表单值都会回发。并且调用每个控件的服务器端验证器以检查其用户输入值的有效性。

答案 1 :(得分:0)

如果您需要实际代码:

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool IsValid
{
    get
    {
        if (!this._validated)
        {
            throw new HttpException(SR.GetString("IsValid_Cant_Be_Called"));
        }
        if (this._validators != null)
        {
            ValidatorCollection validators = this.Validators;
            int count = validators.Count;
            for (int i = 0; i < count; i++)
            {
                if (!validators[i].IsValid)
                {
                    return false;
                }
            }
        }
        return true;
    }
}

它基本上遍历页面上的所有验证器,并检查它们是否都返回IsValid = true。如果其中任何一个无效,则返回false。