public ActionResult Edit(int? id, NoteEdit newItem) { // Validate the input if (!ModelState.IsValid) { // Our "version 1" approach is to display the "edit form" again return RedirectToAction("edit", new { id = newItem.Id }); } if (id.GetValueOrDefault() != newItem.Id) { // This appears to be data tampering, so redirect the user away return RedirectToAction("index"); } // Attempt to do the update var editedItem = m.NoteEdit(newItem); if (editedItem == null) { // There was a problem updating the object // Our "version 1" approach is to display the "edit form" again return RedirectToAction("edit", new { id = newItem.Id }); } else { // Show the details view, which will have the updated data return RedirectToAction("details", new { id = newItem.Id}); } }
public NoteBase NoteEdit(NoteEdit newItem) { // Attention - 6 - Edit existing, for the authenticated user only // Attempt to fetch the object // Can either do a two-condition fetch, or test it in the "if" statement // In this method, we'll do it in the following statement var o = ds.Notes.SingleOrDefault (n => n.Id == newItem.Id && n.Owner == UserAccount.Name); if (o == null) { // Problem - item was not found, so return return null; } else { // Update the object with the incoming values ds.Entry(o).CurrentValues.SetValues(newItem); ds.SaveChanges(); // Prepare and return the object return Mapper.Map<NoteBase>(o); } }