public ActionResult AddDeliveryPost(Delivery delivery) { try { List <KeyValuePair <string, string> > errors = deliveryValidator.CanAddDelivery(delivery); if (errors.Count == 0) { int id = deliveryHandler.Add(delivery); if (id > 0) { return(RedirectToAction("GetDeliveriesList")); } else { this.ModelState.AddModelError("", "Something got wrong when adding delivery. Delivery not added!"); return(AddDelivery(delivery)); } } else { foreach (KeyValuePair <string, string> error in errors) { this.ModelState.AddModelError(error.Key, error.Value); } return(AddDelivery(delivery)); } } catch (Exception ex) { this.ModelState.AddModelError("", ex.Message); if (ex.InnerException != null) { this.ModelState.AddModelError("", ex.InnerException.Message); } return(AddDelivery(delivery)); } }