Asp.net验证控件和服务器端验证

时间:2012-06-08 21:39:57

标签: c# asp.net validation

我最近发现您需要在服务器端代码中执行一些检查以检查页面是否有效。我之前认为执行会在验证器发现错误输入时自动停止执行。

我将以下代码放在需要验证的事件上:

    if (!Page.IsValid)
        return;

这是正确的方法吗?

另外,如果我的页面有两个验证组,那么正确的组会自动在服务器上运行(由按钮触发的那个),还是我需要使用Page.Validate("groupName")来调用它?

由于

1 个答案:

答案 0 :(得分:2)

最好检查客户端和服务器。客户端部分应该自动为您完成,但是如果有人使用任何方式绕过您的UI,则在服务器上检查它是一种防御措施。

您可以将ValidationGroup分配给您的按钮,该按钮的值应与您分配给验证器的ValidationGroup相同。单击按钮时,它可以在同一组上执行客户端验证,如您所述,将停止执行(防止回发)。

在服务器端,您将按照您的提及完成:

Page.Validate("WhateverGroup");
if (!Page.IsValid)
   return; //Didn't pass validation
else
   //Do whatever

如果您有多个组,那么您应该检查每个组(如果适用,可能会检查某些组(某些组可能不适用,具体取决于您通常使用组的某些条件)。

修改

回答你的问题:

选中的“默认”组由发布页面的控件确定。也就是说,如果发布页面的控件将“WhateverGroup”作为其验证组,则只验证具有“WhateverGroup”的验证器。

Page.IsValid只应在调用Page.Validate方法后检查Page.IsValid只是一个标志,在你调用Page.Validate的时候基本上会被绊倒,而且无论是否使用组都调用了它。

参考文献: