CreateUserWizard - добавьте шаг, но не создавайте пользователя, пока все действия не будут завершены

Я хочу использовать элемент ootb ASP.NET2.0 MembershipProvider CreateUserWizard, с небольшой настройкой, чтобы добавить второй шаг.

Проблема заключается в том, что если мой первый шаг - это тип <asp:CreateUserWizardStep...>, а мой второй - <asp:WizardStep...>, пользователь фактически создает сразу после того, как пользователь нажимает на первый шаг и до того, как он перейдет на второй этап.

здесь (очень) базовый элемент управления, который я использую:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server">
   <WizardSteps>
      <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
      </asp:CreateUserWizardStep>
      <asp:WizardStep runat="server" Title="License Step">
      </asp:WizardStep>
      <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
      </asp:CompleteWizardStep>
   </WizardSteps>
</asp:CreateUserWizard>

Есть ли все-таки сказать, что элемент управления должен ждать завершения всех шагов до создания пользователя?

Ответ 1

У меня была та же проблема.

Кажется, что нет другого способа использовать CreateUserWizard в том порядке, в котором вы хотите:

Step 1. User Creation 

Step 2. License Step etc.

После CreateUserWizardStep данные всегда будут записываться в базу данных, если вы не переопределите классы CreateUserWizard.

Если вы измените порядок шагов, он должен работать как опубликованный Эрихом Петерсоном на веб-сайте 4GuysFromRolla, т.е. Шаг 1. Шаг лицензии. Шаг 2.... Шаг 3. Создание пользователя.

UPDATE:

Я нашел соответствующий пост, который может помочь. Короче говоря:

Если вы хотите, чтобы шаг CreateUserWizard CreateUser не создавал пользователя, вы можете попытаться обработать событие CreateUser и установить для свойства LoginCancelEventArgs.Cancel значение true.

Пример кода:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) 
{
 e.Cancel = true; 
} 

Затем, чтобы перейти к следующей странице в мастере, вам нужно обработать событие NextButtonClick:

  • Добавить e.Cancel = False;
  • Добавить CreateUserWizard.ActiveStepIndex = (ваш следующий индекс шага мастера);

После этого вам нужно будет создать пользователя вручную, например. в обработчике событий FinishButtonClick.

Я еще не пробовал, но он должен работать. Надеюсь, что это поможет.