【发布时间】:2010-11-14 20:03:02
【问题描述】:
是否有我可以调用的方法来检索特定 ValidationGroup 是否有效的布尔值? 我不想实际显示验证消息或摘要 - 我只想知道它是否有效。
类似:
Page.IsValid("MyValidationGroup")
【问题讨论】:
标签: asp.net validation
是否有我可以调用的方法来检索特定 ValidationGroup 是否有效的布尔值? 我不想实际显示验证消息或摘要 - 我只想知道它是否有效。
类似:
Page.IsValid("MyValidationGroup")
【问题讨论】:
标签: asp.net validation
试试这个:
Page.Validate("MyValidationGroup");
if (Page.IsValid)
{
//Continue with your logic
}
else
{
//Display errors, hide controls, etc.
}
不完全是你想要的,但希望接近。
【讨论】:
您是否尝试过使用Page.Validate(string) 方法?根据文档,它看起来可能是您想要的。
Page.Validate("MyValidationGroup");
if (Page.IsValid)
{
// your code here.
}
请注意,同样导致回发的控件上的验证器也会触发。从 MSDN 文章中截取...
Validate 方法验证 指定的验证组。后 在 a 上调用 Validate 方法 验证组,IsValid 方法 仅当两者都返回 true 指定的验证组和 控件的验证组 导致页面被发布到 服务器有效。
【讨论】:
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;
}
【讨论】:
Page.GetValidators("<your group name>"),这会稍微简化代码。
如果任何已验证的验证组无效,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;
}
【讨论】:
var isValidGroup = Page
.GetValidators(sValidationGroup)
.Cast<IValidator>()
.All(x => x.IsValid);
【讨论】:
Pavel 的答案有效,但不是最简单的。以下是我的解决方法:
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;
}
【讨论】: