我最近发现您需要在服务器端代码中执行一些检查以检查页面是否有效。我之前的假设是,当验证器发现不正确的输入时,执行会自动停止。
我将以下代码放在需要验证的事件上:
if (!Page.IsValid)
return;
这是正确的方法吗?
另外,如果我的页面有两个验证组,那么正确的组会自动在服务器上运行(由按钮触发的那个)还是我需要使用它来调用它Page.Validate("groupName")
?
谢谢
我最近发现您需要在服务器端代码中执行一些检查以检查页面是否有效。我之前的假设是,当验证器发现不正确的输入时,执行会自动停止。
我将以下代码放在需要验证的事件上:
if (!Page.IsValid)
return;
这是正确的方法吗?
另外,如果我的页面有两个验证组,那么正确的组会自动在服务器上运行(由按钮触发的那个)还是我需要使用它来调用它Page.Validate("groupName")
?
谢谢
最好同时检查客户端和服务器。客户端部分应该为您自动完成,但在服务器上检查它是一种防御措施,以防有人使用任何方式绕过您的 UI。
您可以为您的按钮分配一个 ValidationGroup,它应该与您分配给验证器的 ValidationGroup 的值相同。单击您的按钮时,它可能会在同一组上执行客户端验证,并且正如您所提到的,它将停止执行(防止回发)。
在服务器端,您将完全按照您提到的那样做:
Page.Validate("WhateverGroup");
if (!Page.IsValid)
return; //Didn't pass validation
else
//Do whatever
如果您有多个组,那么您应该检查每个组(如果适用)(根据某些条件,某些组可能不适用,这就是您通常使用组的原因)。
编辑
针对您的问题:
选中的“默认”组由发布页面的控件确定。也就是说,如果发布页面的控件将“WhateverGroup”作为其验证组,那么只有具有“WhateverGroup”的验证器才会被验证。
Page.IsValid
只应在调用该方法 后检查。只是一个标志,在您调用 Page.Validate 的任何时候都会触发并且某些内容不会验证,无论您是否使用组调用它。Page.Validate
Page.IsValid
参考: