更新自定义属性asp.net mvc成员资格

时间:2013-09-19 14:23:26

标签: asp.net-mvc asp.net-mvc-4 asp.net-membership membership-provider

我已经为UserProfile asp.net会员表,姓氏,地址,手机等添加了一些自定义属性。所以 我可以使用。

创建新用户
WebSecurity.CreateUserAndAccount(UserName, Password,
        propertyValues: new
        {
          UserId = model.userId,
          UserLastName = model.lastName,
          UserAddress = model.address,                                                
          .
          .
         }
);

所以我想知道是否有可能以类似的方式实现更新查询,包括这个自定义属性。 谢谢。

1 个答案:

答案 0 :(得分:0)

是的,你可以。但是我不认为WebSecurity提供了更新成员资格表中额外列的方法,例如UserProfile通过其API。

我们是这样做的,我们有MVC4 ASP.NET互联网应用项目,我们正在使用EF5.0 Code First。

您已经知道如何在UserProfile表中添加额外的列(表名可以是任何内容)。

一旦我们有了一个类(所有需要额外的列以及UserId和UserName),

  1. 添加了一个控制器UserController,专门用于促进UserProfile的CRUD操作。
  2. UserController在业务层中使用UserService类,负责处理UserProfile类(实体)上的所有CRUD操作。
  3. 在编辑帖子操作上,控制器调用UserService类UpdateUser()方法,如下所示:

    public void UpdateUser(UserProfile user)
    {
        Guard.ArgumentNotNull(user, "user");
    
        if (_roleWrapper.GetRolesForUser(user.UserName).Any())
        {
            _roleWrapper.RemoveUserFromRoles(user.UserName, _roleWrapper.GetRolesForUser(user.UserName));
        }
    
        if (!_roleWrapper.IsUserInRole(user.UserName, user.Role))
        {
            _roleWrapper.AddUserToRole(user.UserName, user.Role);
        }
    
        _dataContext.Update<UserProfile>(user);
    }
    
  4. 以上文字和示例仅作为示例,您可以简化它。基本上你需要掌握UserProfile类并使用DbContext手动更新它。 WebSecurity限制了API,保持了简洁性。

    希望有所帮助(如果有什么令人困惑的请告诉我,我会进一步扩展)。