Я сделал что-то вроде этого - в моем случае я не хотел отдельное имя пользователя, я использовал их адрес электронной почты в качестве имени пользователя (и не позволил им изменить его), поэтому я сделал:
- в разметке установите Email для ReadOnly = "true" и UserName для Visible = "false"
- в Page_Load, внутри if (! Postback), установите для текстового поля Электронная почта значение Текст в адрес электронной почты и установите для ReadOnly значение true
- в событии CreateUser установите UserName.Text = Email.Text
Это все, что мне нужно - если вам не нужно вводить имя пользователя, я бы порекомендовал подключиться к событию CreateUser и проверить свойство Text электронной почты, чтобы убедиться, что оно установлено правильно. Возможно, что-то еще очищает его после того, как вы его установили.
FWIW, в своем коде я добавил несколько свойств, чтобы облегчить доступ к этим текстовым полям, хотя, вероятно, есть лучшие способы сделать это:)
private TextBox UserName {
get { return GetWizardControl<TextBox>("UserName"); }
}
private TextBox Email {
get { return GetWizardControl<TextBox>("Email"); }
}
private T GetWizardControl<T>(string id) where T : Control {
return (T)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl(id);
}