1

さて、ここにこのシナリオがあります。新しいユーザーを登録するための Register.aspx があります。CreateUserWizard を使用しています。ユーザーが登録に会社のメールのみを使用するようにしたい。そのため、ドメインを示す [Email] テキストボックスの横にラベルを配置しました。これは、ユーザーがドメインを入力する必要がなくなったことを意味します。私のHTMLは次のようになります。

<asp:TextBox ID="Email" runat="server" CssClass="textEntry1"></asp:TextBox>
<asp:Label ID="lblEmail" runat="server" Text="@domain.com"></asp:Label>

したがって、ラベルを textbox.text に追加するために行ったことは次のとおりです。

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

これを行うために OnCreatingUser イベントを使用しています。

_txtEmailAddress.Text には、ユーザーが入力した電子メールの完全な値と、既に修正したドメイン部分が含まれます。データベースに正しく保存されるように、これを電子メールフィールドに更新したいと考えていました。

RegisterUser.Emailしかし、コードをデバッグしていると、ドメインのないメールがまだあることに気付きました。「myemail@domain.com」のようなものを取得する代わりに、「myemail」のみを保存しています。自分のドメインをメールに追加するだけで正しい方向に進んでいるかどうかはわかりません. おそらくそうではありません。どんなポインタでも大歓迎です。

4

1 に答える 1

2

の値ではなく、コントロールの.Emailプロパティを設定する必要があります。これは実際にバックエンドで MembershipProvider のメソッドに渡されるものです。 CreateUserWizardTextBoxCreateUser

このような:

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;
}
于 2013-02-28T16:08:18.730 に答える