1

カスタム MembershipUser、MembershipProvider、および RolePrivoder クラスを作成しました。これらはすべて機能し、1 つのことを除けば、非常に満足しています。「Users」テーブルに追加のフィールドがあります。余分な変数を取り込んでDBに入れるCreateUser()のオーバーライドされたメソッドがあります。

私の問題は、これを Create User Wizard コントロールから呼び出せるようにしたいということです。コントロールをカスタマイズして、追加のフィールドにデータを入力するドロップダウンを作成しました。次のコードを使用してその情報を保存しましたが、プロファイルを使用する方法とカスタム CreateUser メソッドを呼び出す方法がわかりません。

 // Create an empty Profile for the newly created user     
 ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);

 // Populate some Profile properties off of the create user wizard
 p.CurrentLevel = Int32.Parse(((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("clevel")).SelectedValue);

 // Save profile - must be done since we explicitly created it
 p.Save(); 

助けてくれてありがとう

ジョン・ホーキンス

4

3 に答える 3

2

I think your solution is the "easiest" you're going to get. You could create your own wizard and call the correct method, but that's a lot more work.

The only thing I could recommend is using the OnCreatedUser event instead.

reference: 4guysfromrolla

于 2009-01-28T16:50:30.360 に答える
1

これは答えではありませんが、回避策を見つけました。誰かが質問に直接答えられるかどうかを知りたいです...

public void UpdateCurrentLvl_OnDeactivate(object sender, EventArgs e)
{
    int level = Int32.Parse(((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("clevel")).SelectedValue);
    MyMembershipUser myUser = (MyMembershipUser)Membership.GetUser(CreateUserWizard1.UserName);
    myUser.CurrentLVL = level;
    Membership.UpdateUser(myUser);
}

私の最初の CreateUserWizardStep で、上記のメソッドを非アクティブ化時に起動する場合。この時点でユーザーが DB に挿入されたので、ユーザーを取り出し、MembershipUser クラスにキャストし、変数とすべての更新メソッドを設定できます。

私が言うように、これは私が解決したかった方法からの回避策ですが、うまくいきます。

ありがとう

于 2009-01-28T16:28:18.517 に答える