Reputation: 311
Firstly, I'm very new to this so if this is a simple question answered elsewhere please just link me there; I don't want to waste anyone's time (I tried searching for a long time before posting).
So, moving on, I'm having some trouble updating information in my database (Using EntityFramework) in an MVC3 project. I have a profile controller (using static info and the nullable int right now for testing) that looks like this:
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
});
}
I've then got a strongly typed view that starts like this:
@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>
and strings the form down for each attribute of my ViewModel except MemberID. It closes with
<p>
<input type="submit" value="Save" />
@Html.ActionLink("Cancel", "Summary")
</p>
Back in my controller I then have the complementary method:
[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);
}
The problem is that when I try to update a member's information I get a "Sequence contains no elements" error, even though i know that the MemberID i specified is valid since i was able to get to the update page, and I know the UpdateMember method works correctly since it was tested fully before this part of the project began. Where am I going wrong with the update?
Upvotes: 1
Views: 259
Reputation: 60503
You're missing a
@Html.HiddenFor(m => m.MemberID)
in your view.
Upvotes: 1