有沒有我可以調用的方法檢索布爾值的一個特定的驗證組是否有效? 我不想實際顯示驗證消息或摘要 - 我只是想知道它是否有效。檢查驗證組是否有效從代碼隱藏
喜歡的東西:
Page.IsValid("MyValidationGroup")
有沒有我可以調用的方法檢索布爾值的一個特定的驗證組是否有效? 我不想實際顯示驗證消息或摘要 - 我只是想知道它是否有效。檢查驗證組是否有效從代碼隱藏
喜歡的東西:
Page.IsValid("MyValidationGroup")
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.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文章中剪下...
驗證方法驗證指定的驗證組爲 。 呼籲在 驗證組的驗證方法後,IsValid的方法 將返回true只有兩個 指定驗證組和對照的 驗證組 導致網頁被髮布到 服務器是有效的。
值得一提的是,這將在失敗的驗證中顯示驗證消息。 – modiX 2014-08-13 10:25:24
Page.IsValid將是錯誤的,如果任何驗證的驗證組是無效的。如果您想驗證一個組,查看狀態,請嘗試:
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);
帕維爾的答案的作品,但不是簡單的。下面是我如何解決它:
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;
}
那麼將Page.Validate導致我的ValidationSummary顯示? – 2009-07-28 19:24:59
如果您想以此方式使用此解決方案,則需要以編程方式禁用/隱藏驗證摘要。 – 2009-07-28 19:26:11