0

私はASP.NETメンバーシッププロバイダーと協力しています。SqlMembership Providerを使用していますが、以下に示すようにCreateUserクラスをオーバーライドしました。

ご覧のとおり、多くの値を含むSportDetailsフィールドがあるので、これをCreateUserメソッドで使用します。これらの値を渡すにはどうすればよいですか?これらの値はViewModelから取得されるためです。Infact SportDetailsは、登録ページの私のviewModelです。

public class CustomMembershipProvider : SqlMembershipProvider
{
    public SportsDetails SportsDetails { get; set; }

    public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
    {
        string.empty
        MembershipUser membershipUser = base.CreateUser(username, password, "", null,null, false, null, out status);

        // here is where I want to be able to use the value from Sports Details.

        return membershipUser;
    }
}

と私のweb.config

<membership defaultProvider="CustomMembershipProvider">
<providers>
    <clear/>        
    <add name="CustomMembershipProvider" type="Service.Security.CustomMembershipProvider" connectionStringName="my_db" requiresQuestionAndAnswer="false" enablePasswordRetrieval="false" enablePasswordReset="true" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="3" minRequiredNonalphanumericCharacters="0" passwordFormat="Clear" passwordAttemptWindow="10" applicationName="myApp" />
</providers>
</membership>

これについて私を助けてください。

4

1 に答える 1

1

難しい方法で答えを見つけました;)

これにはインターフェイスを使用しました。

以下は私の使用したインターフェースです。

public interface ISportsDetailer{

public SportDetails SportsDetails { get; set; }

}

次に、カスタムプロバイダーで、このインターフェイスを次のように実装しました。

public class CustomMembershipProvider : SqlMembershipProvider, ISportsDetailer
{}

CreateUserを呼び出して、その前にこれらの値を渡すために、

((ISportsDetailer)Membership.Provider).SportsDetails = valueFromModel;

これが将来誰かに役立つことを願っています:)

于 2012-09-08T05:12:13.663 に答える