Вы не можете сделать это, потому что элементы управления, которые вы пытаетесь проверить, не отображаются на странице. то есть, валидаторы не существуют, поэтому Page.Validate()
и Page.IsValid
вернут истину, потому что валидаторов нет, поэтому все верно. Надеюсь, имеет смысл?
Перейдите в View Source, и вы увидите, что источник содержит только разметку для текущего шага мастера. Поэтому любые валидаторы на предыдущих страницах не отображаются и, следовательно, не проверяются.
Я бы предложил скрыть боковую панель. Таким образом, пользователь не сможет пропустить страницы, и когда он нажмет «Далее», текущие элементы управления будут проверены, поэтому они могут продолжить работу, только если они завершили страницу, на которой они находятся.
P.S. Вам не нужно перебирать все валидаторы и проверять их действительность. Просто используйте Page.Validate () (вы даже можете передать ValidationGroup этому методу), а затем проверьте логическое значение Page.IsValid.
EDIT:
Согласно комментариям ниже:
Свойство Page:
public bool PageOneValid
{
get
{
if (ViewState["PageOneValid"] == null)
return false;
return (bool)ViewState["PageOneValid"];
}
set
{
ViewState["PageOneValid"] = value;
}
}
На первой странице следующий щелчок или щелчок на боковой панели:
Page.Validate("PageOne");
PageOneValid = Page.IsValid;