public IActionResult CVMT([FromBody] VMComplicatedViewModel cvm) { var isValid = ModelState.IsValid; #region two methods to read error messages are both ok. var modelErrors = ModelState.Where(x => x.Value.ValidationState == ModelValidationState.Invalid) .SelectMany(x => x.Value.Errors.Select(y => $"{x.Key} - {y.ErrorMessage}")).ToList(); //var modelErrors = // ModelState.Where(x => x.Value.ValidationState == ModelValidationState.Invalid) // .SelectMany(x => x.Value.Errors.Select(y => new { x.Key, y.ErrorMessage })).ToList(); #endregion return(Json(new { IsValid = isValid, Errors = modelErrors })); }
public IActionResult CVMT() { var jsObj = new VMComplicatedViewModel { Name = "aaaaaaaa", VM = new ViewModel { Name = "aaaaaaaabbb" }, ListViewModel = new List <ViewModel> { new ViewModel { Name = "", Age = 10 } } }; object json = Newtonsoft.Json.JsonConvert.SerializeObject(jsObj); return(View(json)); }