public ActionResult Create(PromoFormViewModel viewModel)
 {
     try
     {
         if (ModelState.IsValid)
         {
             if (viewModel.Save(viewModel))
             {
                 return(RedirectToAction("List"));
             }
         }
         return(RedirectToAction("List"));
     }
     catch
     {
         return(RedirectToAction("Create"));
     }
 }
 public ActionResult Edit(PromoFormViewModel viewModel)
 {
     try
     {
         if (ModelState.IsValid)
         {
             if (viewModel.Save(viewModel))
             {
                 return(RedirectToAction("List"));
             }
         }
         else
         {
             var errors = ModelState.Where(v => v.Value.Errors.Any());
             throw new ModelValidationException("ModelState Error");
         }
     }
     catch (Exception ex)
     {
         ViewData["Exception"] = "Exception: " + ex.Message + ex.InnerException + ex.StackTrace;
         return(RedirectToAction("Edit"));  // not sure this gets reached in the event of an error
     }
     return(RedirectToAction("Edit"));
 }