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方法正常工作,因爲它在項目的這部分開始之前已經完全測試。我在哪裏出錯了更新?