首页 新闻 搜索 专区 学院

mVC 利用profile拓展membership的基本用户信息的疑问

0
悬赏园豆:50 [待解决问题]

   最近在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>
View Code在web.config中 profile的配置代码

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 }
View Code

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里面的记录
View Code 控制器中注册用户的代码

4、操作界面截图:

5、列表显示效果:

6、代码执行完后的数据库里面的记录如下:

aspnet_profile

 

aspnet_Users

aspnet_membership

 

 

希望大家指导下,谢谢!

博客园逛逛的主页 博客园逛逛 | 初学一级 | 园豆:152
提问于:2013-08-16 18:04
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册