Why ModelState.IsValid always return false in mvc
asp.net-mvc, c#
Solution
Please post your Model Class.
To check the errors in your `ModelState` use the following code:
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
OR: You can also use
var errors = ModelState.Values.SelectMany(v => v.Errors);
Place a break point at the above line and see what are the errors in your `ModelState`.
Problem
In my controller this code: ``` [HttpPost] public ActionResult Edit(Company company, FormCollection IsCostCenters) { if (ModelState.IsValid) { Company objNewCompany = new Company(); //oParty.CostCenters.Clear(); using (PaymentAdviceEntityContainer db1 = new PaymentAdviceEntityContainer()) { objNewCompany = db1.Companies.Find(company.Id); objNewCompany.CostCenters.Clear(); string[] temp = IsCostCenters["CostCenters"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var s in temp) { if (s != "false") { CostCenter oCostCenter = new CostCenter(); oCostCenter = db1.CostCenters.Find(Convert.ToInt32(s)); objNewCompany.CostCenters.Add(oCostCenter); } } db1.SaveChanges(); } db.Entry(company).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.CreatedById = new SelectList(db.Employees, "Id", "FirstName", company.CreatedById); return View(company); } ``` And my view code as below ``` @using PaymentAdviceEntity; @{ ViewBag.Title = "Edit"; List<CostCenter> clist = new List<CostCenter>(); clist = ((List<CostCenter>)ViewBag.CostCenters).ToList(); } <div style="line-height: 22px; width: 100%;height :3%; float: left; "> @{ foreach (var item in clist) { <div style="line-height: 22px; width: 28%; float: left;"> <span class="checkbox">@Html.CheckBox("CostCenters", item.IsChecked, new { @value = item.Id })</span> <span>@Html.DisplayFor(modelItem => item.Name)</span> </div> } } ``` So please what is reason `ModelState.IsValid` is return false in page post time ...