C# 在OnCreatingUser事件中编辑CreateUserWizard文本框

C# 在OnCreatingUser事件中编辑CreateUserWizard文本框,c#,asp.net,events,createuserwizard,C#,Asp.net,Events,Createuserwizard,好的,我这里有一个场景。我有一个Register.aspx用于注册新用户。我正在使用CreateUserWizard。我希望用户只使用公司的电子邮件进行注册。因此,我在显示域的电子邮件文本框旁边放置了一个标签,这意味着用户不再需要键入域。 我的HTML如下所示: <asp:TextBox ID="Email" runat="server" CssClass="textEntry1"></asp:TextBox> <asp:Label ID="lblEmail" ru

好的,我这里有一个场景。我有一个Register.aspx用于注册新用户。我正在使用CreateUserWizard。我希望用户只使用公司的电子邮件进行注册。因此,我在显示域的电子邮件文本框旁边放置了一个标签,这意味着用户不再需要键入域。 我的HTML如下所示:

<asp:TextBox ID="Email" runat="server" CssClass="textEntry1"></asp:TextBox>
<asp:Label ID="lblEmail" runat="server" Text="@domain.com"></asp:Label>
我正在使用OnCreatingUser事件来执行此操作

_txtEmailAddress.Text将具有用户键入的电子邮件的完整值以及我已经修复的域部分。我希望将其更新到电子邮件字段中,以便将其正确存储到数据库中

但是当我调试代码时,我意识到
RegisterUser.Email
仍然有没有域的电子邮件。而不是得到类似于“myemail@domain.com,我只存储了“myemail”。我不确定我是否只是在他们的电子邮件中添加我自己的域名。很可能不是。非常感谢任何指针。

您需要设置
CreateUserWizard
控件的值,而不是
文本框的值。这是在后端实际传递给MembershipProvider的
CreateUser
方法的内容

像这样:

protected void RegisterUser_CreatingUser(object sender, EventArgs e)
{
    TextBox _txtEmailAddress = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Email");
    Label _lblEmailAddress = (Label)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("lblEmail");

    // Set the email property of the CreateUserWizard control to append the domain
    RegisterUser.Email = _txtEmailAddress.Text + _lblEmailAddress.Text;
}

救生员!谢谢!我睡不好,因为这东西一直在我脑子里想。哈哈,为什么我没有考虑将其设置为电子邮件属性。不管怎样,谢谢@Zenvo很高兴我能帮上忙(=)有时候你只需要休息一下,或者用另一双眼睛看看问题。
protected void RegisterUser_CreatingUser(object sender, EventArgs e)
{
    TextBox _txtEmailAddress = (TextBox)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("Email");
    Label _lblEmailAddress = (Label)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("lblEmail");

    // Set the email property of the CreateUserWizard control to append the domain
    RegisterUser.Email = _txtEmailAddress.Text + _lblEmailAddress.Text;
}