当前位置:  开发笔记 > 编程语言 > 正文

我应该一直打电话给Page.IsValid吗?

如何解决《我应该一直打电话给Page.IsValid吗?》经验,为你挑选了2个好方法。

我知道永远不要相信用户输入,因为不良输入可能会以某种方式损害应用程序的完整性,无论是偶然的还是有意的; 但是,即使页面上没有验证控件,也有一种调用Page.IsValid的情况(同样,我知道通过省略验证来信任用户输入的不良做法)?Page.IsValid是否执行任何其他类型的验证?我查看了MSDN,文档似乎表明只有在页面上有验证控件或者调用了Page.Validate方法时,Page.IsValid才有效.我的一个朋友建议我每次都在按钮单击处理程序中检查Page.IsValid,即使没有验证控件或显式的Page.Validate调用.



1> Cerebrus..:

我会第一个告诉你" 所有的输入都是邪恶的,直到证明不然. "然而,在这种情况下,我认为你的朋友是错的,因为根据他/她的逻辑,我们可能会提出一百个应该是的其他属性检查或设置,即使默认值是可以的.

Page.IsValid如果您有"CausesValidation"方案,则仅检查有意义 - 提交表单的按钮的CausesValidation属性设置为True.这将自动调用,Page.Validate并且ValidationGroup将检查属于同一个的所有验证控件的有效性.

编辑:

只需使用Reflector检查它,如果Page没有任何Validator(ValidatorCollection为null),函数将始终返回True.



2> Leyu..:

您可以通过检查Page.IsValid属性检查页面的有效性,检查Page.IsValid的目的可能会有所不同

如果您有将EnableClientScript属性设置为false的Validators

如果您有服务器端验证的Validator.

在PostBack事件处理程序主体中执行关键操作之前,如保存,删除,验证 ...

根据页面的有效性进行/显示不同的内容......

你能想到的任何事情......

所以你何时/何地可以调用Page.IsValid

    如果页面在回发中

    如果回发是由CauseValidation属性设置为true的输入控件引起的.

    在调用Page.Validate之后,即在Page.Load事件之后.

如果调用的地点/时间满足上述条件,您可以在页面生命周期中检查Page.IsValid; 否则Page.IsValid将导致抛出System.Web.HttpException.

你应该在有意义的地方使用Page.IsValid ; 就像在输入控件的回发事件处理程序中(使用CausesValidation = true)并要求页面状态有效以正确执行其任务.(如果您有服务器端验证的验证器或验证器,客户端验证关闭,它必须成为必须).

   protected void btnSave_Click(object sender, EventArgs e)
    {
       //Note that there might be ServerSideValidation which evaluated to false.
       if (!Page.IsValid)  
         return;

       CurrentEntity.Save();
    }

最后请注意,Page.IsValid仅检查页面上验证器控件中的验证错误,这完全取决于验证器控件的作用.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有