2013-09-26 4 views
3

Это сводит меня с ума. Я рассмотрел и попытался ответы от этих SO нитей, но безрезультатно:CreateUserWizard игнорирует .MoveTo

CreateUserWizard step changing issue after account creation

Advancing wizard from code-behind in ASP.NET

Prevent Navigation to CreateUserWizardStep in the Postback event of nextbutton

Я добавил wizardstep до одного, который создает пользователь в базе данных :

(0) Личные данные

(1) Регистрация Ф.О. т Ваш новый аккаунт

(2) Полный

В шаге 0, у меня есть (страшились) ReCaptcha. Шаблон навигации для шага 0:

<StartNavigationTemplate> 
     <asp:Button ID="StartNextButton" runat="server" CommandName="MoveNext" Text="Next" OnClick="StartNextButton_Click" CausesValidation="true"/> 
    </StartNavigationTemplate> 

Здесь я проверяю reCaptcha в кодебе. Это объявление обработчика было создано VS2012. Если проверка не пройдена, следует повторно нагрузку (и перейти к) шаг:

protected void StartNextButton_Click(object sender, EventArgs e) 
    { 
     recaptcha.Validate(); 
     if (! recaptcha.IsValid) 
     { 
      RegisterUser.ActiveStepIndex = 0; 
      RegisterUser.MoveTo(RegisterUser.ActiveStep);    
     } 
    } 

В идеале (и то, что я сделал в более ранних версиях), чтобы установить e.Cancel = TRUE при сбое проверки. Поскольку VS только передает EventArgs e, Отмена недоступна, таким образом, сглаживание ActiveStep.

Отладка показывает проверка работает, но в случае неудачи проверки - несмотря на настройки ActiveStepIndex 0 - Я прошел к шагу 1.

Любые советы будут оценены.

+0

Конечно, как только я разместил это, я придумал несколько альтернативных способов достижения этого, но они либо взлома, либо изменение рабочего процесса, который я хотел. Там должен быть способ сделать это. –

+0

Я закончил сдачу recaptcha в конце шага 1, и все было хорошо. –

ответ

2

Мастер не остановит переход к следующему шагу здесь. Вам необходимо определить OnNextButtonClick и использовать это событие, чтобы отменить переход к следующему шагу мастера.

<asp:Wizard OnNextButtonClick="RegisterUser_NextButtonClick" ID="RegisterUser" 
    runat="server"> 

protected void RegisterUser_NextButtonClick(object sender, WizardNavigationEventArgs e) 
{ 
      if(RegisterUser.ActiveStep==0) 
       { 
       recaptcha.Validate(); 
        if (! recaptcha.IsValid) 
         { 
          e.Cancel = true; 
         }    
       } 
     return; 
} 
+0

Я пробовал это, но никуда не денусь. Раньше кладу recaptcha в конце шага 1. –

Смежные вопросы