public async Task <IActionResult> Edit(Receiver newValues) { //get session id (we will use it when updating data and handling errors) String sessionID_s = HttpContext.Session.GetString("Session"); Guid sessionID = Guid.Parse(sessionID_s); Data current = new Data(); Program.data.TryGetValue(sessionID, out current); current.Receiver = newValues; try { await _session.EditReceiver(newValues.ID, newValues.name, newValues.listening_time, newValues.rest_time, newValues.recovery_time); } catch (Exception e) { // log exception here current.message = e.Message.ToString() + " Error"; await _session.Rollback(); return(RedirectToAction("BeforeEdit", "Receiver")); } finally { _session.CloseTransaction(); } current.edited = true; return(RedirectToAction("BeforeEdit", "Receiver")); }