我可以调用一个方法来检索特定ValidationGroup是否有效的布尔值吗? 我不想实际显示验证消息或摘要 - 我只是想知道它是否有效。
类似的东西:
Page.IsValid("MyValidationGroup")
答案 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;
}