2012-08-31 31 views
1

首先,我對此很新,所以如果這是一個簡單的問題,請在其他地方回答,請直接鏈接到那裏;我不想浪費任何人的時間(我在發帖前嘗試了很長時間)。從MVC3中的ViewModel更新數據庫中的信息

因此,我在我的數據庫(使用EntityFramework)更新MVC3項目中的信息時遇到了一些麻煩。我有一個輪廓控制器(使用靜態信息和可空INT現在用於測試),看起來像這樣:

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 
    }); 
} 

我再有一個強類型的觀點,即開始是這樣的:

@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> 

併爲我的ViewModel除了MemberID以外的每個屬性形成字符串。它關閉與

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

早在我的控制器我再有補充方法:

[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); 
     } 

的問題是,當我嘗試更新成員的信息,我得到一個「序列不包含任何元素」錯誤,即使我知道我指定的MemberID是有效的,因爲我能夠到達更新頁面,並且我知道UpdateMember方法正常工作,因爲它在項目的這部分開始之前已經完全測試。我在哪裏出錯了更新?

回答

1

你缺少

@Html.HiddenFor(m => m.MemberID) 
在你看來