我正在使用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>
请帮我解决这个问题。
答案 0 :(得分:1)
艰难地找到答案;)
我为此使用了接口。
下面是我使用的界面。
public interface ISportsDetailer{
public SportDetails SportsDetails { get; set; }
}
然后在我的自定义提供程序中,我将此接口实现为
public class CustomMembershipProvider : SqlMembershipProvider, ISportsDetailer
{}
并调用CreateUser并在它之前传递这些值,我使用
((ISportsDetailer)Membership.Provider).SportsDetails = valueFromModel;
希望这对未来有所帮助:)