2012-06-08 96 views
0

我最近发现您需要在服务器端代码中执行一些检查以检查页面是否有效。我以前是在假设执行自动停止确认器发现不正确的输入时。Asp.net验证控件和服务器端验证

我把下面的代码在需要验证我的事件:

if (!Page.IsValid) 
     return; 

这是做了正确的方法是什么?

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

谢谢

回答

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的时候会被触发,而某些东西无法验证,无论你是否使用组来调用它。

参考文献:

+0

所以在默认情况下它运行哪些群体到底是什么?仅仅检查Page.IsValid是不够的? – TheGateKeeper

+0

感谢您的编辑,但为什么您需要再次调用验证程序,即使它们默认运行(如您所说)? – TheGateKeeper

+0

可以发布到您的服务器而无需与您的网站进行交互。假设有人在银行网站上这样做,仅仅检查客户端是不够的,他们最好还是检查服务器。事实上,如果您是通过网站/单元测试您的网站,这实际上是通过发布而不是实际与您的网站进行交互来实现所有操作的自动化,这是非常常见的。 – Jeremy