CreateUserWizard - добавить шаг, но не создавать пользователя, пока все шаги не завершены - PullRequest
10 голосов
/ 15 июня 2011

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

Проблема в том, что если мой первый шаг - это тип <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 Ответ

8 голосов
/ 23 июля 2011

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

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

Step 1. User Creation 

Step 2. License Step etc.

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

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

ОБНОВЛЕНИЕ:

Я нашел соответствующую запись , которая может помочь.Вкратце:

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

Пример кода:

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

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

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

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

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

...