代码之家  ›  专栏  ›  技术社区  ›  Mike Cole

从代码隐藏检查ValidationGroup是否有效

  •  25
  • Mike Cole  · 技术社区  · 15 年前

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

    比如:

    Page.IsValid("MyValidationGroup")
    
    6 回复  |  直到 15 年前
        1
  •  37
  •   Scott Ivey    15 年前

    你有没有试过使用 Page.Validate(string) 方法根据文档,它看起来可能是你想要的。

    Page.Validate("MyValidationGroup");
    if (Page.IsValid)
    {
        // your code here.
    }
    

    请注意,也导致回发的控件上的验证程序也将启动。从MSDN文章中剪下。。。

    Validate方法验证 指定的验证组。之后 验证组,IsValid方法 仅当两个 指定的验证组和 该控件的验证组 导致页面被发布到

        2
  •  16
  •   Pavel Chuchuva grapeot    15 年前
    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;
    }
    
        3
  •  7
  •   Ahmad Ahmadi    10 年前
    var isValidGroup = Page
                        .GetValidators(sValidationGroup)
                        .Cast<IValidator>()
                        .All(x => x.IsValid);
    
        4
  •  4
  •   Matthew Jones    15 年前

    试试这个:

    Page.Validate("MyValidationGroup");
    if (Page.IsValid) 
    {
        //Continue with your logic
    }
    else
    {
        //Display errors, hide controls, etc.
    }
    

    不完全是你想要的,但希望很接近。

        5
  •  3
  •   Tim Witham    13 年前

        protected bool IsGroupValid(string sValidationGroup)
        {
            Page.Validate(sValidationGroup);
            foreach (BaseValidator validator in Page.GetValidators(sValidationGroup))
            {
                if (!validator.IsValid)
                {
                    return false;
                }
            }
            return true;
        }
    
        6
  •  1
  •   Rory    10 年前

    帕维尔的答案可行,但不是最简单的。我是这样解决的:

    protected Boolean validateGroup(String validationGroupName) {
            Boolean isGroupValid = true;
    
            foreach (BaseValidator validatorControl in Page.GetValidators(validationGroupName)) {
                validatorControl.Validate();
    
                if (!validatorControl.IsValid)
                    isGroupValid = false;
            }
    
            if (!isGroupValid)
                return false;
            else
                return true;
        }