Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net验证控件和服务器端验证_C#_Asp.net_Validation - Fatal编程技术网

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

C# Asp.net验证控件和服务器端验证,c#,asp.net,validation,C#,Asp.net,Validation,我最近发现,您需要在服务器端代码中执行一些检查,以检查页面是否有效。我以前的假设是,当验证器发现不正确的输入时,执行会自动停止 我将以下代码放在需要验证的事件上: 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.IsValid
只是一个标志,它在您调用Page.Validate的任何时候都会被触发。无论您使用组还是不使用组来调用它,验证和不验证都是有效的

参考资料:


那么默认情况下,它到底运行哪些组?jut check Page.IsValid难道还不够吗?谢谢您的编辑,但是为什么您需要再次调用验证程序,即使它们在默认情况下运行(如您所说)?可以在不与您的网站交互的情况下发布到您的服务器。假设有人在银行网站上这样做,检查客户端是不够的,他们最好也检查服务器。事实上,如果您正在对您的站点进行web/单元测试,这是非常常见的,它本质上是通过发布而不是实际与您的站点交互来自动化所有操作。