1

몇 가지 다른 기사를 읽었지 만 제 시나리오에는 해당되지 않는다고 생각합니다.MVC User Membership 레코드를 업데이트하는 방법은 무엇입니까?

사용자에게 연결된 프로필을 업데이트하려고합니다. 그러나 암호 필드를 포함하지 않기 때문에 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 

편집 :

아이디어! 이것을 위해 새로운 모델을 만들어야합니까?

+0

회원 모델 자체의 측면을 업데이트하려는 사람은 다음을 참조하십시오. http://stackoverflow.com/questions/10245017/saving-an-email-change-within-the-default-membership-provider-in- asp-net-mvc – user1477388

답변

2

Password 필드가 포함되지 않은 새보기 모델을 만든 다음 RegisterModel 도메인 모델 대신 EditRegistry 컨트롤러 동작으로이보기 모델을 매개 변수로 사용해야합니다.

+0

그것이 내가 한 일입니다. 그러나 여전히 모델의 유효성을 검사하지 않고 있으며 유효성 검사 메시지를 표시하지 않습니다. "계정 수정에 실패했습니다. 오류를 수정하고 다시 시도하십시오." 그러나 내 @ Html.ValidationMessageFor (Function (m) m.Email)는 오류를 표시하지 않습니다. – user1477388

+2

모든 검증 오류 목록을 표시하려면 뷰에'@Html.ValidationSummary (false)'를 넣으십시오. –

+0

네, 대린! 다시 해냈어! 문제는 내 사용자 이름 필드 였지만 유효성 검사 요약을 추가 할 때까지는 볼 수 없었습니다. – user1477388

관련 문제