1

我在 MVC4 Web 应用程序中使用 SimpleMembership。我不知道如何编辑个人资料信息。我想我可以像你做任何其他桌子一样做到这一点。

        [HttpPost]
        public ActionResult EditUser(UserProfile user)
        {
            if (ModelState.IsValid)
            {
                udb.Entry(user).State = EntityState.Modified;
                udb.SaveChanges();
                return RedirectToAction("Index");
            }

但是我收到一条错误消息,指出当前上下文中不存在实体状态。我的上下文在控制器顶部定义如下。

private UsersContext udb = new UsersContext();

我可以找到大量有关访问配置文件数据的参考资料,但没有找到用于编辑数据的资料。如何将编辑后的 ​​UserProfile 数据保存回数据库?

编辑:我能够解决 entityState 错误——我必须包括 system.data 和 system.data.entity。但是现在当我运行时,我在编辑时收到一个错误,上面写着意外修改的行数(0)。并指向 udb.SaveChanges() 行。仍然无法弄清楚如何修改 UserProfile 数据元素。

4

1 回答 1

0

简单的回答。我需要在我的视图中设置模型的所有字段。我只允许用户更改 6 个中的 4 个,因此没有设置两个。

我认为当您将模型传递给视图时,如果未在视图中设置它们,视图会将相同的字段值传递给操作。例如:如果我在视图中设置 FirstName 而不是 UserName,则发送到视图的原始 UserName 将被传递给模型。情况似乎并非如此。对于模型中的所有项目,我不允许它们在视图中更改,我必须设置隐藏字段来设置字段,以便发送完整的模型。

设置单个字段可能会更好,但我不确定如何做到这一点,这不是问题所在。

于 2012-11-01T00:58:24.537 回答