检查ValidationGroup是否在代码隐藏中有效

Mik*_*ole 25 asp.net validation

是否有一个我可以调用的方法来检索特定ValidationGroup是否有效的布尔值? 我不想实际显示验证消息或摘要 - 我只是想知道它是否有效.

就像是:

Page.IsValid("MyValidationGroup")
Run Code Online (Sandbox Code Playgroud)

Sco*_*vey 35

您是否尝试过使用Page.Validate(字符串)方法?根据文档,它看起来可能是你想要的.

Page.Validate("MyValidationGroup");
if (Page.IsValid)
{
    // your code here.
}
Run Code Online (Sandbox Code Playgroud)

请注意,控件上也会导致回发的验证器也会触发.从MSDN文章剪切...

Validate方法验证指定的验证组.在验证组上调用Validate方法后,仅当指定的验证组和导致页面发布到服务器的控件的验证组都有效时,IsValid方法才会返回true.


Pav*_*uva 16

protected bool IsGroupValid(string sValidationGroup)
{
   foreach (BaseValidator validator in Page.Validators)
   {
      if (validator.ValidationGroup == sValidationGroup)
      {
         bool fValid = validator.IsValid;
         if (fValid)
         {
            validator.Validate();
            fValid = validator.IsValid;
            validator.IsValid = true;
         }
         if (!fValid)
            return false;
      }

   }
   return true;
}
Run Code Online (Sandbox Code Playgroud)

  • +1您还可以使用`Page.GetValidators("<您的组名>")`这将简化代码. (2认同)

Ahm*_*adi 7

var isValidGroup = Page
                    .GetValidators(sValidationGroup)
                    .Cast<IValidator>()
                    .All(x => x.IsValid);
Run Code Online (Sandbox Code Playgroud)