public override void OnActionExecuted(ActionExecutedContext filterContext) { Barebone.Controllers.ControllerBase controller = filterContext.Controller as Barebone.Controllers.ControllerBase; if (controller != null && !controller.ViewData.ModelState.IsValid) { if ((filterContext.Result is RedirectResult) || (filterContext.Result is RedirectToRouteResult)) { IEnumerable <ModelStateWrapper> modelStateWrappers = controller.ViewData.ModelState.Select( ms => new ModelStateWrapper() { Key = ms.Key, Value = ms.Value.AttemptedValue, ValidationState = ms.Value.ValidationState //Errors = ms.Value.Errors.Select(e => e.ErrorMessage) } ); controller.TempData[Key] = JsonConvert.SerializeObject(modelStateWrappers, Formatting.None, new JsonSerializerSettings() { ContractResolver = new NoCultureInfoResolver() }); } } base.OnActionExecuted(filterContext); }
public override void OnActionExecuted(ActionExecutedContext filterContext) { Barebone.Controllers.ControllerBase controller = filterContext.Controller as Barebone.Controllers.ControllerBase; if (controller != null) { string serializedModelState = controller.TempData[Key] as string; if (!string.IsNullOrEmpty(serializedModelState)) { IEnumerable <ModelStateWrapper> modelStateWrappers = JsonConvert.DeserializeObject <IEnumerable <ModelStateWrapper> >(serializedModelState, new JsonSerializerSettings() { Error = DeserializationErrorHandler }); if (modelStateWrappers != null) { if (filterContext.Result is ViewResult) { foreach (ModelStateWrapper modelStateWrapper in modelStateWrappers) { controller.ViewData.ModelState.SetModelValue(modelStateWrapper.Key, modelStateWrapper.Value, modelStateWrapper.Value); controller.ViewData.ModelState[modelStateWrapper.Key].ValidationState = modelStateWrapper.ValidationState; //if (modelStateWrapper.ValidationState == ModelValidationState.Invalid) // foreach (string error in modelStateWrapper.Errors) // controller.ViewData.ModelState[modelStateWrapper.Key].Errors.Add(new ModelError(error)); } } else { controller.TempData.Remove(Key); } } } } base.OnActionExecuted(filterContext); }