最近在membership的信息拓展时遇到了一些问题,希望大家指导下,谢谢。问题是这样的:
我的本意是想在注册用户的时候把用户名放到aspne_users里面,也把自定义的信息(Identity、Phone、Address)同时存放到数据库的aspnet_profile表里面,并且他们对应的UserId是一样的,但我没有实现。我的具体操作如下:
1、首先我在web.config配置文件的<system.web></system.web>字节里添加了profile的配置信息,配置代码如下所示:
1 <system.web> 2 。。。 3 <profile defaultProvider="SqlProvider"> 4 <providers> 5 <clear /> 6 <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="myConnectionString" 7 applicationName="/" /> 8 </providers> 9 10 <properties>//以下是自定义的用户基本信息(拓展信息) 11 <add name ="Identify" type ="String" allowAnonymous="true"/>//身份证号码 12 <add name ="Phone" type ="String" allowAnonymous="true"/>//电话号码 13 <add name ="Address" type ="String" allowAnonymous="true"/>//地址 14 </properties> 15 </profile> 16 17 。。。 18 </system.web>
2、在models下定义了UserInformation的类,代码如下所示:
1 public class UserInformation 2 { 3 [Required] 4 [Display(Name = "用户名")] 5 public string UserName { get; set; } 6 7 [Required] 8 [DataType(DataType.EmailAddress)] 9 [Display(Name = "电子邮件地址")] 10 public string Email { get; set; } 11 12 [Required] 13 [ValidatePasswordLength] 14 [DataType(DataType.Password)] 15 [Display(Name = "密码")] 16 public string Password { get; set; } 17 18 [DataType(DataType.Password)] 19 [Display(Name = "确认密码")] 20 [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")] 21 public string ConfirmPassword { get; set; } 22 23 24 [Display(Name = "身份证号码")] 25 public string Identify {get;set;} 26 27 [Display(Name = "电话号码")] 28 public string Phone {get;set;} 29 30 [Display(Name = "住址")] 31 public string Address {get;set; } 32 }
3、在控制器里面定写了如下的代码
1 //添加用户 2 public ActionResult AddUser() 3 { 4 return View(); 5 } 6 7 [HttpPost] 8 public ActionResult AddUser(UserInformation model) 9 { 10 //使用membership类里面的创建用户的方法,这边可以成功创建用户A的记录,特别说明:在数据库表aspnet_User和aspnet_membership记录着用户A的相关信息:用户名是我在注册页面填写的用户名信息 11 MembershipUser newUser = Membership.CreateUser (model.UserName,model.Password,model.Email); 12 13 //对拓展的profile属性值赋值。特别说明:执行完下面的代码后发现:在数据库表aspnet_User里面有用户B的UserId和UserName,该用户名是系统自动生成的字符串;在数据库aspnet_profile里面记录着用户B的拓展信息,aspnet_profile里面的UserId在aspnet_User里面有相同的:agi 14 HttpContext.Profile["Identify"] = model.Identify; 15 HttpContext.Profile["Phone"] = model.Phone; 16 HttpContext.Profile["Address"] = model.Address; 17 return content(“注册成功!”); 18 } 19 总的来说,在aspnet_User表里面有两条记录,一条对应aspnet_membership的记录,一条对应aspnet_profile里面的记录
4、操作界面截图:
5、列表显示效果:
6、代码执行完后的数据库里面的记录如下:
aspnet_profile
aspnet_Users
aspnet_membership
希望大家指导下,谢谢!