1

いくつかの記事を読みましたが、私のシナリオには当てはまらないと思います。

ユーザーに関連付けられたプロファイルを更新しようとしています。ただし、パスワード フィールドが含まれていないため、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

編集:

考え!このために新しいモデルを作成する必要がありますか?

4

1 に答える 1

2

Passwordフィールドを含まない新しいビュー モデルを作成し、コントローラー アクションにドメイン モデルEditRegistryの代わりにこのビュー モデルをパラメーターとして使用させる必要があります。RegisterModel

于 2012-08-09T15:09:18.600 に答える