いくつかの記事を読みましたが、私のシナリオには当てはまらないと思います。
ユーザーに関連付けられたプロファイルを更新しようとしています。ただし、パスワード フィールドが含まれていないため、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
編集:
考え!このために新しいモデルを作成する必要がありますか?