在我们的应用系统中,asp.net 2.0的用户表中的数据往往不能满足我们的需求,还需要增加更多的数据,一种可能的解决方案是使用Profile,更普遍的方案可能是CreateUserwizard中添加数据到我们自己的表中。
在结合asp.net 2.0的用户管理系统设计的保存用户额外信息的表中的主键是用户表ID的外键,你可以获取ID从Membershipuser属性Provideruserkey. 使用Createuserwizard的Oncreateduser事件. 在这个事件中可以通过Membership类的GetUser方法获取当前创建成功的用户MembershipUser 。
MembershipUser user = Membership.getuser=(MyCreateUserWizar.UserName) ;
使用Createuserwizard的UserName属性可以获得注册的用户名. 当你建立用户membershipuser对象,可以使用Provideruserkey获取用户的主键值(一个GUID值):
CreateUserWinard的OnCreatedUser事件中可以获取你要添加的额外用户信息和Provideruserkey的值插入到你自己的数据库表中。下面是一个如何使用的例子:
protected void CreateUserWizard1_CreatedUser( object sender, System.EventArgs e)
{
MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName);
if (user != null)
Throw New ApplicationException("找不到用户.");
Guid userId = (Guid)user.ProviderUserKey;
// 获取CreateUserWizard控件中的额外的用户注册信息
TextBox myData = CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("TextBox1") as TextBox;
UserInfo userinfo = new UserInfo();
userinfo.ID = userId;
userinfo.QQ = myData.Text;
……
this.AddMyDataToMyDataSource(userinfo);
}
private void AddMyDataToMyDataSource(UserInfo myData)
{
//添加数据到自己的数据库表中
}