ASP.Net MVC 3 Membership.UpdateUser(MembershipUser用户)

时间:2011-09-19 08:26:08

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

我有一个使用MVC3的项目。在我的项目中,我有一个用户可以编辑其帐户的页面(UserComment,UserEmail,IsLocked,IsApproved)。我已经创建了编辑帐户视图。编辑控制器我有些麻烦。 这是我的代码:

    [HttpPost]
    public ActionResult Edit(string id, FormCollection collection)
    {
        id = id.Replace("+", " ");
        var user = Membership.GetUser();
        Guid UserGUID = new Guid(user.ProviderUserKey.ToString());
        var SysUser = db.System_User.Single(u => u.User_UserId == UserGUID);

        //this is for updating User Office in my System_user table
        SysUser.User_Office = collection["SysUsers[0].UserOffice"];

        //this is for updating User Account in aspnet_membership table
        user.UserName = collection["SysUsers[0].UserName"];
        Membership.UpdateUser(user);

        user.Comment = collection["SysUsers[0].UserComment"];
        Membership.UpdateUser(user);

        user.Email = collection["SysUsers[0].UserEmail"];
        Membership.UpdateUser(user);

        return View();
    }

当我运行我的控制器时,我得到一些错误,如:

  1. user.UserName是只读的,我无法更新这个。
  2. 我获得了user.Comment值,但它没有更新。
  3. 我的编辑视图中出现错误,它说“对象引用未设置为对象的实例”。   @using(Html.BeginForm(“edit /”+ @ Model.SysUsers [0] .UserID,“cpanel / sysuser”,FormMethod.Post))
  4. 谁能帮助我吗?

    谢谢,

2 个答案:

答案 0 :(得分:0)

您无法使用ASP.NET成员资格提供程序更新用户的UserName。如果您想更新用户名,则需要编写一些自定义数据访问逻辑。

答案 1 :(得分:0)

我建议主要使用成员资格提供程序进行身份验证,并将所有其他维护等方法构建到用户的业务对象中。