【问题标题】:How to update an MVC User Membership record?如何更新 MVC 用户成员资格记录?
【发布时间】:2012-08-06 19:20:56
【问题描述】:

我已经阅读了几篇不同的文章,但我认为它们不适用于我的场景。

我正在尝试更新附加到用户的个人资料;但是,它不会让我通过 ModelState.IsValid 部分,因为我不包含密码字段。

我想更新一些字段,但不是密码字段。那么,如何从 RegisterModel 中省略这些?

这是我的代码:

'
' POST: /Account/EditRegistry

<HttpPost()> _
Public Function EditRegistry(registerModel As RegisterModel) As ActionResult

    If ModelState.IsValid Then

        ' get membership from user name
        Dim user = Membership.GetUser(registerModel.UserName)

        ' get user profile
        Dim db0 = New UserProfileDbContext
        Dim profile = db0.UserProfiles.Where(Function(p) p.UserId = user.ProviderUserKey).Single()

        ' TODO: update profile
        profile.IsCompanyOwner = registerModel.IsCompanyOwner
        profile.IsBlogOwner = registerModel.IsBlogOwner
        profile.CompanyId = registerModel.Company
        profile.BlogId = registerModel.Blog
        db0.Entry(profile).State = EntityState.Modified
        db0.SaveChanges()

        ' get model changes to membership object


        ' update membership object from model


    End If

    ' If we got this far, something failed, redisplay form
    Return View(registerModel)

End Function

编辑:

想法!我必须为此创建一个新模型吗?

【问题讨论】:

标签: asp.net-mvc vb.net asp.net-mvc-3 entity-framework asp.net-membership


【解决方案1】:

您应该创建一个不包含Password 字段的新视图模型,然后让您的EditRegistry 控制器操作将此视图模型作为参数而不是RegisterModel 域模型。

【讨论】:

  • 这就是我所做的;但是,它仍然没有验证模型,也没有显示任何验证消息。它只是说,“帐户修改不成功。请更正错误并重试。”但是,我的 @Html.ValidationMessageFor(Function(m) m.Email) 没有显示任何错误。
  • 尝试在视图中添加@Html.ValidationSummary(false) 以显示所有验证错误的列表。
  • 是的,达林!你又做到了!问题是我的用户名字段,但在添加验证摘要之前我看不到它。
猜你喜欢
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多