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

时间:2009-07-28 19:19:40

标签: asp.net validation

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

类似的东西:

Page.IsValid("MyValidationGroup")

6 个答案:

答案 0 :(得分:34)

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

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

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

  

Validate方法验证   指定的验证组。后   在a上调用Validate方法   验证组,IsValid方法   只有两个都会返回true   指定的验证组和   控制的验证组   导致页面被发布到   服务器有效。

答案 1 :(得分: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;
}

答案 2 :(得分:7)

var isValidGroup = Page
                    .GetValidators(sValidationGroup)
                    .Cast<IValidator>()
                    .All(x => x.IsValid);

答案 3 :(得分:4)

试试这个:

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

不完全是你想要的,但希望能够关闭。

答案 4 :(得分:3)

如果任何经过验证的验证组无效,则Page.IsValid将为false。如果要验证组并查看状态,请尝试:

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

答案 5 :(得分:1)

帕维尔的回答有效,但并不是最简单的。以下是我解决它的方法:

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;
    }