2012-08-31 3 views
1

먼저이 질문에 답하기 만하면됩니다. 나는 누군가의 시간을 낭비하고 싶지 않다 (나는 게시하기 전에 오랫동안 검색을 시도했다).MVC3의 ViewModel에서 데이터베이스의 정보를 업데이트하십시오.

MVC3 프로젝트에서 내 데이터베이스 (EntityFramework 사용)의 정보를 업데이트하는 데 문제가 있습니다. 나는이처럼 보이는 프로파일 컨트롤러 (테스트를 위해 지금 정적 정보와 널 (NULL)의 INT 사용)이 있습니다

@using (Html.BeginForm()) { 

    <div class="editor-label"> 
     <label for="fname">First Name:</label> 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.FirstName) 
     @Html.ValidationMessageFor(model => model.FirstName) 
    </div> 
: 다음과 같이 시작하는 강력한 형식의 뷰를 가지고
public ViewResult Edit(int? memberID) 
{ 
    Member member = repository.Members.GetMember(12985); 
    return View(new ProfileEditViewModel 
    { 
     MemberID = member.id, 
     FirstName = member.fname, 
     LastName = member.lname, 
     HomePhone = member.home_phone, 
     CellPhone = member.cell_phone, 
     Address = member.street, 
     City = member.city, 
     State = member.state, 
     Zip = member.zip, 
     Email = member.email, 
     Sex = member.sex, 
     MemberType = member.membertype, 
     TypeOfCar = member.typeofcar 
    }); 
} 

및 MemberID를 제외한 내 ViewModel의 각 속성에 대한 양식 문자열.

[HttpPost] 
    public ActionResult Edit(ProfileEditViewModel memberViewModel) 
    { 
     Member member = repository.Members.GetMember(memberViewModel.MemberID); 
     if (ModelState.IsValid) 
     { 
      member.fname = memberViewModel.FirstName; 
      member.lname = memberViewModel.LastName; 
      member.home_phone = memberViewModel.HomePhone; 
      member.cell_phone = memberViewModel.CellPhone; 
      member.street = memberViewModel.Address; 
      member.city = memberViewModel.City; 
      member.state = memberViewModel.State; 
      member.zip = memberViewModel.Zip; 
      member.email = memberViewModel.Email; 
      member.sex = memberViewModel.Sex; 
      member.membertype = memberViewModel.MemberType; 
      member.typeofcar = memberViewModel.TypeOfCar; 

      repository.Members.UpdateMember(member); 

      return RedirectToAction("Summary"); 
     } 
     else 
     { 
      //there is something wrong with the data 
      return View(member); 
     } 

문제는 내가 회원의 정보를 업데이트 할 때 나는 "시퀀스에 요소가없는"얻을 것입니다 오류 : 그것은 다시 내 컨트롤러

<p> 
    <input type="submit" value="Save" /> 
    @Html.ActionLink("Cancel", "Summary") 
</p> 

와 그때 보완 방법을 닫습니다 비록 내가 업데이트 페이지를 얻을 수 있었기 때문에 내가 지정한 MemberID가 유효하다는 것을 알았지 만, 프로젝트의이 부분이 시작되기 전에 완전히 테스트되었으므로 UpdateMember 메소드가 올바르게 작동한다는 것을 알고있다. 업데이트가 어디서 잘못 되었습니까?

답변

1

당신은 당신의보기에서

@Html.HiddenFor(m => m.MemberID) 

을 놓치고있어.

관련 문제