public static string[] GetErrors(this ModelStateDictionary modelState, string prefix)
        {
            if (!modelState.IsValid)
            {
                List <string> errors = new List <string>();

                IEnumerable <KeyValuePair <string, ModelState> > states =
                    prefix.IsNullOrEmpty() ? modelState.AsEnumerable()
                    : modelState.Where(x => x.Key.StartsWith(prefix + "."));

                foreach (var modelStateKvp in states)
                {
                    foreach (var modelError in modelStateKvp.Value.Errors)
                    {
                        errors.Add(modelError.ErrorMessage);
                    }
                }

                return(errors.ToArray());
            }

            return(null);
        }